java.lang.reflect.Proxy 的替代方法,用于创建抽象类(而不是接口)的代理
根据文档:
[
java.lang.reflect.
]Proxy
提供了用于创建动态代理类和实例的静态方法,它也是这些方法创建的所有动态代理类的超类。
newProxyMethod
方法(负责生成动态代理)具有以下签名:
public static Object newProxyInstance(ClassLoader loader,
Class<?>[] interfaces,
InvocationHandler h)
throws IllegalArgumentException
不幸的是,这可以防止生成扩展特定抽象类的动态代理(而不是实现特定的接口)。这是有道理的,考虑到是“所有动态代理的超类”,从而防止另一个类成为超类。java.lang.reflect.Proxy
因此,是否有任何替代方法可以生成从特定抽象类继承的动态代理,从而将对抽象方法的所有调用重定向到调用处理程序?java.lang.reflect.Proxy
例如,假设我有一个抽象类:Dog
public abstract class Dog {
public void bark() {
System.out.println("Woof!");
}
public abstract void fetch();
}
有没有一个类允许我执行以下操作?
Dog dog = SomeOtherProxy.newProxyInstance(classLoader, Dog.class, h);
dog.fetch(); // Will be handled by the invocation handler
dog.bark(); // Will NOT be handled by the invocation handler