请问JDK的动态代理,代理的是一个对象还是一组接口 JDK的动态代理,代理的是一个对象还是一组接口? 如果是一个特定的对象,那它怎么知道是那个对象? 因为Proxy.newProxyInstance(classLoader, interfaces, 代理类); 没有指定代理的目标对象啊~~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 那么也就是有着同样接口的Object,都会代理喽。可实际上只是代理一个对象哦。我就是不了解JDK怎么知道是在代理那个对象 你调用的时候Proxy.newProxyInstance(classLoader, interfaces, 代理类);对这个方法是要传一个接口的实现的类,就是对这个类进行代理,只有这个类实现了接口,才能对它进行代理,还有cglib也是进行代理的, 代理类是实现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(); SWing组建操作没显示? java读写多文件问题 还是简单问题 关于DOM解析xml,高分求教(顶者有分) 如何设置环境变量 我如何获得一个子目录下的所有*.s文件? 关于mysql驱动器 对jbuilder熟悉的大虾请帮忙 同时安装j2sdk和jbuilder,j2sdk下无法编译.java文件。WHY!!! java收到的socks4代理请求怎么解析 java.util.set用法 关键字过滤 jsp
可实际上只是代理一个对象哦。我就是不了解JDK怎么知道是在代理那个对象
具体如下
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();