黑马程序员_动态代理
来源:互联网 发布:vb format函数怎么用 编辑:程序博客网 时间:2024/06/05 16:59
---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------
如果仅仅是对动态代理的操作并不困难,难得是理解其背后的原理,如invocation内调用proxy的原因,谁调用的invoke方法,目标对象方法如何产生等等。这些都需要看源代码或咨询他人才能弄懂,这里先记录下动态代理的一般操作方法。
动态代理的基本应用如下代码:
package proxy;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
importjava.util.ArrayList;
importjava.util.Collection;
import java.util.Iterator;
public class proxyDemo {
publicstatic void main(String[] args) throws Exception {
//利用Proxy的静态方法newProxyInstance创建代理对象
Collectionproxy=(Collection)Proxy.newProxyInstance(
//类加载器为接口的类加载器
Collection.class.getClassLoader(),
//接口集合中传入Collection接口
newClass[] {Collection.class},
//创建InvocationHandler匿名对象
newInvocationHandler() {
//创建目标对象
ArrayListtarget=new ArrayList();
@Override
publicObject invoke(Object proxy, Method method, Object[] args)
throwsThrowable {
//调用的方法指向目标,另可以在方法前,方法后,方法前后和异常处理catch模块中加入代码
ObjectreturnVal=method.invoke(target, args);
returnreturnVal;
}
});
//利用代理调用目标的方法目标中添加元素
proxy.add("abc1");
proxy.add("abc2");
proxy.add("abc3");
proxy.add("abc4");
//利用代理,调用目标的迭代器方法,对目标中的元素进行迭代打印
Iteratorit=proxy.iterator();
while(it.hasNext()){
Objectobj=it.next();
System.out.println(obj);
}
}
}
---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------
- 黑马程序员_动态代理
- 黑马程序员_动态代理
- 黑马程序员_动态代理
- 黑马程序员_动态代理
- 黑马程序员_ 动态代理
- 黑马程序员_动态代理
- 黑马程序员_动态代理
- 黑马程序员_动态代理技术
- 黑马程序员_动态代理入门讲解
- 黑马程序员10_动态代理
- 黑马程序员-反射机制_动态代理
- 黑马程序员_Java基础_动态代理
- 黑马程序员_代理模式之动态代理
- 黑马程序员_代理,动态代理的经典总结
- 黑马程序员_动态代理和静态代理总结
- 黑马程序员_学习笔记_Java加强_动态代理
- 黑马程序员_代理
- 黑马程序员_代理
- 指针与数组
- Fatal error: Call-time pass-by-reference has been removed in E:\xx\db\mysqli.php on line 267
- 字符编解码的故事(ASCII,ANSI,Unicode,Utf-8区别)
- ios ARC 机制中的strong和weak 属性关键字的原理和使用规则
- 后缀自动机
- 黑马程序员_动态代理
- 修改AngularJS中的$http cache中的数据
- poj3308 Paratroopers --- 最小点权覆盖->最小割
- hadoop学习之第二个程序求平均成绩。
- cocos2d-x 事件分发机制 ——触摸事件监听
- cocos2d-x 事件分发机制 ——加速计事件监听
- 黑马程序员_多线程
- XML的SelectNodes使用方法以及XPath
- 20 Copy Clone