动态代理
来源:互联网 发布:指纹对比算法 编辑:程序博客网 时间:2024/06/11 22:58
最近学习了一下动态代理,感觉很有意思,就简单学习了一下,动态代理的思路比较简单。
动态代理:顾名思义,就是为了能够对某个类进行代理,为什么要就行代理呢?在某些时候,我们希望在不改变原始类的方法的情况下,能够在方法的前面和后面,添加诸如:运行时间,添加日志等等,这个时候就要使用动态代理了。
好了,废话不多说,上代码。
//接口pubic interface HelloWorldImpl{ void printHelloWorld();}//实现这个接口的类public class HelloWorld implements HelloWorldImpl{ @Override public void printHelloWorld(){ System.out.println("Hello World! "); }}//对这个接口的动态代理public class HelloWorldHandler implements InvocationHandler{ private Object target; public HelloWorldHandler(Object target){ this.target=target; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { Object o=null; System.out.println("Before method"); /*此处使用的是java的反射机制 *相当于target.method(); */ o=method.invoke(target, args); System.out.println("After method"); return o; }} public static void main(String[] args){ HelloWorldImpl helloWorld=new HelloWorld(); InvocationHandler handler=new HelloWorldHandler(helloWorld); HelloWorldImpl proxy=(HelloWorldImpl) Proxy.newProxyInstance(helloWorld.getClass().getClassLoader(), helloWorld.getClass().getInterfaces(), handler); proxy.printHelloWWorld(); }
运行结果是:
0 0
- 代理-->静态代理&动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 【latex】LaTeX如何输入大小写罗马数字?
- 物联网操作系统HelloX V1.80测试版发布
- UIView 中布局学习例子
- html之块级元素和内联元素
- 当复仇者联盟遇上Dagger2、RxJava和Retrofit的巧妙结合
- 动态代理
- libuv学习笔记(14)
- 离线保存浏览器网页
- Error: Registry key 'Software\JavaSoft\Java Runtime Environment'\CurrentVersion'
- Android新特性之CardView的简单使用
- Spring缓存注解@Cache,@CachePut , @CacheEvict,@CacheConfig使用
- CentOS使用EPEL YUM源
- android你可能要用到的自定义View分享
- winform chart 控件之滚动条的放大与缩小功能