Android插件化开发基础之Java动态代理(proxy)机制的简单例子
【摘要】 一、代码
package com.sangfor.tree; import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy; interface ProxyInterFace { public void proxy...
一、代码
-
package com.sangfor.tree;
-
-
import java.lang.reflect.InvocationHandler;
-
import java.lang.reflect.Method;
-
import java.lang.reflect.Proxy;
-
-
interface ProxyInterFace {
-
public void proxyMethod();
-
}
-
-
class TargetObject implements ProxyInterFace {
-
-
public void proxyMethod() {
-
System.out.println("我被代理了,哈哈!");
-
}
-
}
-
-
class ProxyObject implements InvocationHandler {
-
//代码的对象
-
public Object targetObject;
-
-
public void setTargetObject(Object targetObject) {
-
this.targetObject = targetObject;
-
}
-
-
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
-
//调用,传入一个目标对象,和对应的对象参数
-
System.out.println("代理前 你可以做的事情");
-
Object object = method.invoke(targetObject, args);
-
System.out.println("代理后 你可以做的事情");
-
return object;
-
}
-
}
-
-
public class ProxyDemo {
-
public static void main(String[] args) {
-
//代理的目标对象
-
ProxyInterFace target = new TargetObject();
-
//代理器
-
ProxyObject proxy = new ProxyObject();
-
proxy.setTargetObject(target);
-
//需要传进函数的handler
-
InvocationHandler handler = proxy;
-
//生存新的代理对象
-
Object newProxyObject = Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), handler);
-
//新的代理对象执行方法
-
((ProxyInterFace)newProxyObject).proxyMethod();
-
}
-
}
二、结果
-
代理前 你可以做的事情
-
我被代理了,哈哈!
-
代理后 你可以做的事情
文章来源: chenyu.blog.csdn.net,作者:chen.yu,版权归原作者所有,如需转载,请联系作者。
原文链接:chenyu.blog.csdn.net/article/details/53185210
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)