根据 文件:
[
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