关键词搜索

源码搜索 ×
×

Android插件化开发基础之Java动态代理(proxy)机制的简单例子

发布2016-11-16浏览3623次

详情内容

一、代码

  1. package com.sangfor.tree;
  2. import java.lang.reflect.InvocationHandler;
  3. import java.lang.reflect.Method;
  4. import java.lang.reflect.Proxy;
  5. interface ProxyInterFace {
  6. public void proxyMethod();
  7. }
  8. class TargetObject implements ProxyInterFace {
  9. public void proxyMethod() {
  10. System.out.println("我被代理了,哈哈!");
  11. }
  12. }
  13. class ProxyObject implements InvocationHandler {
  14. //代码的对象
  15. public Object targetObject;
  16. public void setTargetObject(Object targetObject) {
  17. this.targetObject = targetObject;
  18. }
  19. public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
  20. //调用,传入一个目标对象,和对应的对象参数
  21. System.out.println("代理前 你可以做的事情");
  22. Object object = method.invoke(targetObject, args);
  23. System.out.println("代理后 你可以做的事情");
  24. return object;
  25. }
  26. }
  27. public class ProxyDemo {
  28. public static void main(String[] args) {
  29. //代理的目标对象
  30. ProxyInterFace target = new TargetObject();
  31. //代理器
  32. ProxyObject proxy = new ProxyObject();
  33. proxy.setTargetObject(target);
  34. //需要传进函数的handler
  35. InvocationHandler handler = proxy;
  36. //生存新的代理对象
  37. Object newProxyObject = Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), handler);
  38. //新的代理对象执行方法
  39. ((ProxyInterFace)newProxyObject).proxyMethod();
  40. }
  41. }

二、结果

  1. 代理前 你可以做的事情
  2. 我被代理了,哈哈!
  3. 代理后 你可以做的事情

 
 
 

相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载