相关疑难解决方法(0)

java.lang.reflect.Proxy的替代方法,用于创建抽象类(而不是接口)的代理

根据文件:

[ java.lang.reflect.] Proxy提供了用于创建动态代理类和实例的静态方法,它也是由这些方法创建的所有动态代理类的超类.

newProxyMethod方法(负责生成动态代理)具有以下签名:

public static Object newProxyInstance(ClassLoader loader,
                                      Class<?>[] interfaces,
                                      InvocationHandler h)
                             throws IllegalArgumentException
Run Code Online (Sandbox Code Playgroud)

不幸的是,这可以防止生成扩展特定抽象类的动态代理(而不是实现特定的接口).这是有道理的,考虑到java.lang.reflect.Proxy"所有动态代理的超类",从而阻止另一个类成为超类.

因此,是否有任何替代方法java.lang.reflect.Proxy可以生成从特定抽象类继承的动态代理,将对抽象方法的所有调用重定向到调用处理程序?

例如,假设我有一个抽象类Dog:

public abstract class Dog {

    public void bark() {
        System.out.println("Woof!");
    }

    public abstract void fetch();

}
Run Code Online (Sandbox Code Playgroud)

是否有一个课程允许我做以下事情?

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 …
Run Code Online (Sandbox Code Playgroud)

java dynamic-proxy

80
推荐指数
1
解决办法
4万
查看次数

标签 统计

dynamic-proxy ×1

java ×1