动态代理
来源:互联网 发布:高铁买票软件 编辑:程序博客网 时间:2024/05/18 01:46
动态代理两个要素:
1.代理的接口
2.处理接口方法调用的java.lang.reflect.InvocationHandler
/** * 要代理的接口 * @author Administrator * */public interface ProxyInterface {String getName(String name);}
调用被代理的接口中的方法时invoke方法被调用
import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;/** * 处理接口方法调用 * @author Administrator * */public class MethodHanlder implements InvocationHandler {private Object target;public void setTarget(Object target) {this.target = target;}@Overridepublic Object invoke(Object proxy, Method method, Object[] args)throws Throwable {System.out.println("----------method start--------");Object result=method.invoke(target, args);System.out.println("----------method end----------");return result;}}
被代理对象
public class ProxyTarget implements ProxyInterface{@Overridepublic String getName(String name) {return name;}}
测试类
import java.lang.reflect.Proxy;public class Test {public static void main(String[] args) {//被代理对象ProxyInterface target=new ProxyTarget();MethodHanlder handler=new MethodHanlder();handler.setTarget(target);//创建代理ProxyInterface object=(ProxyInterface) Proxy.newProxyInstance(ProxyTarget.class.getClassLoader(),target.getClass().getInterfaces(), handler);String name=object.getName("张三");System.out.println(name);//结果/**----------method start------------------method end----------张三**/}}
0 0
- 代理-->静态代理&动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- 动态代理
- HDU 1171 Big Event in HDU
- 关于arc与非arc的混合编程
- 集合类的retainCount
- RabbitMQ (消息队列)专题学习01 RabbitMQ部署
- C. Inna and Dima 深度搜索
- 动态代理
- 没有匹配 if 的非法 else 问题解决办法
- 移动平台的meta标签-----神奇的功效
- 求凸包面积:poj3348
- Zend Studio中安装Aptana及几个配置说明
- Java并发编程中的join()与interrupt()函数
- 直流稳压电路种类
- Windows下Hook API技术
- gcc和g++的区别