浏览 1235 次
|
锁定老贴子 主题: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:异常,百思不得其解,请求给予解释 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2007-09-25
郁闷,第一次提交失败,要重写.
LZ没有搞清楚继承和组合的关系?还是没有搞清楚什么是代理模式? interface C{
...
}
class A implments C{
...
}
class ProxyA implments C{
private A a;
...
}
现在你获得了一个ProxyA的实例,你把它转换成A?结果自然是异常. 动态代理也是这个基础 |
|
| 返回顶楼 | |
|
最后更新时间:2007-09-25
realreal2000 真是一言惊醒梦中人啊 。。。。
谢啦 |
|
| 返回顶楼 | |



