上面我手动实现Proxy代理对象,但是却报错
查阅资料后发现,根本原因在于 第二个参数,用法错误
Class.getInterfaces() 主要作用是获取某类所实现的接口所有接口,返回值Class<?>[] ,而我竟然是获取接口的接口,所以出错了
解决办法:
一.用该接口的实现类去 .Class.getInterfaces()
我这里没有去实现该接口,所以没有编写子类,因此用的第二种方法获取接口
二.new Class[]{代理接口.class},
例如:
new Class[]{UserOrderFeign.class}
正确操作
public static void main(String[] args) {
UserOrderFeign o = (UserOrderFeign)Proxy.newProxyInstance(UserServiceController.class.getClassLoader(),
//UserOrderFeign.class.getInterfaces(),
new Class[]{UserOrderFeign.class},
new InvocationHandler() {
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("111");
return "hahaha";
}
}
);
String s = o.testFeign();
System.out.println(s);
}