com.sun.proxy.$Proxy0 cannot be cast to ...
【错误提示】
Exception in thread "main" java.lang.ClassCastException: com.sun.proxy.$Proxy0 cannot be cast to proxy.test.Bank
at proxy.test.ProxyTest2.main(ProxyTest2.java:40)
【报错代码】
package proxy.test;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
/*
* 自测
*/
interface Bank{
public void loan(String name,int money) ;
}
class Creditor implements Bank{
@Override
public void loan(String name,int money) {
// TODO Auto-generated method stub
System.out.println("贷款人:"+name+",贷款金额(万元):"+money);
}
}
class MyInvocationHandler2 implements InvocationHandler{
private Object obj;
public MyInvocationHandler2(Object obj) {
this.obj=obj;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
// TODO Auto-generated method stub
return method.invoke(obj, args);
}
}
public class ProxyTest2 {
public static void main(String[] args) {
Bank credictor=new Creditor();
InvocationHandler handler=new MyInvocationHandler2(credictor);
Bank bank=(Bank)Proxy.newProxyInstance(Bank.class.getClassLoader(), Bank.class.getInterfaces(), handler);
bank.loan("王二小", 300);
}
}
【错误改正】
将main方法中
Bank bank=(Bank)Proxy.newProxyInstance(Bank.class.getClassLoader(), Bank.class.getInterfaces(), handler);
改为:
Bank bank=(Bank)Proxy.newProxyInstance(credictor.getClass().getClassLoader(), credictor.getClass().getInterfaces(), handler);
【错误原因】
loader:代表与目标对象相同的类加载器———-目标对象.getClass().getClassLoader()
上述中的目标对象为credictor(贷款者)
【正确输出】
还没有评论,来说两句吧...