La clase Proxy JDK solo acepta interfaces en el método de fábrica newProxyInstance().¿Por qué JDK Dynamic Proxy solo funciona con interfaces?
¿Hay una solución disponible o implementaciones alternativas? Los casos de uso son limitados si tengo que extraer métodos a una interfaz para habilitarlos para su uso con un proxy. Me gustaría envolverlos para aplicar acciones basadas en anotaciones durante el tiempo de ejecución.
public static <T> T getProxy(T obj) {
InvocationHandler ih = new InjectProxy(obj);
ClassLoader classLoader = InjectProxy.class.getClassLoader();
return (T) Proxy.newProxyInstance(classLoader, obj.getClass().getInterfaces(), ih);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
}
Bueno, en principio puede usar una biblioteca de códigos de bytes como ASM para crear un proxy de clase usted mismo. –
@Krik, algunas bibliotecas de simulación de prueba unitaria hacen esto. Necesita crear una clase derivada que anule los métodos que desee. (ya sea automática o manualmente) –
¿Has considerado Aspect-J que está diseñado para hacer este tipo de cosas? –