浏览 2692 次
锁定老帖子 主题:java 动态代理的一点迷惑
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-09-25
package proxydemo; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Proxy; import com.langsin.dynamicproxy.DynamicSubject; import com.langsin.dynamicproxy.RealSubject; import com.langsin.dynamicproxy.Subject; public class Client1 { public static void main(String[] args) { DisplayServiceImpl obj = new DisplayServiceImpl(); InvocationHandler target = new DynamicDisplayService(obj); Class cls = obj.getClass();//为什么只能转出来接口 //DisplayServiceImpl ds = (DisplayServiceImpl) 向下转型不成功这样的时候会报异常???为什么 DisplayService ds = (DisplayService) Proxy.newProxyInstance(cls.getClassLoader(), cls .getInterfaces(), target); System.out.println(ds.show("helloddddd")); //aa.show("hello"); // System.out.println(aa.getClass().get); } } 在 得到一个动态代理的实例,既然是返回一个实现了这个接口的实例,那么在这里将他转向下转型成DisplayServiceImpl的时候为什么会报java.lang.ClassCastException:异常,百思不得其解,请求给予解释 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-09-25
郁闷,第一次提交失败,要重写.
LZ没有搞清楚继承和组合的关系?还是没有搞清楚什么是代理模式? interface C{ ... } class A implments C{ ... } class ProxyA implments C{ private A a; ... } 现在你获得了一个ProxyA的实例,你把它转换成A?结果自然是异常. 动态代理也是这个基础 |
|
返回顶楼 | |
发表时间:2007-09-25
realreal2000 真是一言惊醒梦中人啊 。。。。
谢啦 |
|
返回顶楼 | |