Java继承黑客使用动态代理

时间:2014-08-31 15:43:13

标签: java dynamic reflection aop interceptor

我有2个接口

public interface A{
  public void sayHello();
}

public interface B extends A{
 }

我有一个实现接口A的类,让我们说:

public class AImpl implements A{

public void sayHello(){
System.out.println("Hello");

}

}

现在我想使用AImpl为接口B实现动态代理对象。我能这样做吗?

我通过以下代码尝试了它

InvocationHandler handler = new MyInvocationHandler(<AImplInstance>);
       B b= (B) Proxy.newProxyInstance(
                A.class.getClassLoader(),
                new Class[]{A.class},
                handler);
        b.sayHello();

我的调用处理程序是:

public class MyInvocationHandler implements InvocationHandler{

    private A aImpl;


public MyInvocationHandler(A aImpl){
        this.aImpl= aImpl;
    }


    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        return method.invoke(aImpl, args);
    }
}

在将代理实例强制转换为B实例时,我遇到了类转换异常。

1 个答案:

答案 0 :(得分:1)

您尚未将B定义为代理的界面。将其添加到Class[]