请问JDK的动态代理,代理的是一个对象还是一组接口

totyumengr 2008-10-24 06:51:11
JDK的动态代理,代理的是一个对象还是一组接口?

如果是一个特定的对象,那它怎么知道是那个对象?

因为Proxy.newProxyInstance(classLoader, interfaces, 代理类);
没有指定代理的目标对象啊~~
...全文
195 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
MagicianLiu 2009-04-28
  • 打赏
  • 举报
回复
代理类是实现InvocationHandler接口
具体如下
private static class TestBeanHander implements InvocationHandler {
private Object obj;

public TestBeanHander(Object obj) {
this.obj = obj;
}

@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
System.out.println(proxy.getClass().getName());
System.out.println("JDK-START");
Object re = method.invoke(obj, args);
System.out.println("JDK-END");
return re;
}
}

代理示例:
ITestBean tb = new TestBean();
tb = (ITestBean) Proxy.newProxyInstance(tb.getClass().getClassLoader(),
tb.getClass().getInterfaces(), new TestBeanHander(tb));
有关JDK动态代理的原理,可以看看我的博客
《JDK动态代理为什么必须用接口以及与CGLIB的对比》
http://blog.csdn.net/MagicianLiu/archive/2009/04/24/4107497.aspx
tb.add();
xinji84 2008-10-24
  • 打赏
  • 举报
回复
你调用的时候Proxy.newProxyInstance(classLoader, interfaces, 代理类);对这个方法是要传一个接口的实现的类,就是对这个类进行代理,只有这个类实现了接口,才能对它进行代理,还有cglib也是进行代理的,
xinji84 2008-10-24
  • 打赏
  • 举报
回复
代理的是接口,
totyumengr 2008-10-24
  • 打赏
  • 举报
回复
那么也就是有着同样接口的Object,都会代理喽。
可实际上只是代理一个对象哦。

我就是不了解JDK怎么知道是在代理那个对象
richard_2010 2008-10-24
  • 打赏
  • 举报
回复
接口吧

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧