首页 > 编程 > Java > 正文

java中的代理

2019-11-08 18:45:45
字体:
来源:转载
供稿:网友
package test;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.PRoxy;import java.util.Arrays;import java.util.Random;public class TraceHandler implements InvocationHandler { private Object target; public TraceHandler(Object target) { this.target = target; } public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.print(target); System.out.print("." + method.getName() + "("); if (args != null) { for (int i = 0; i < args.length; i++) { System.out.print(args[i]); if(i < args.length - 1) { System.out.print("."); } } } System.out.println(")"); return method.invoke(target, args); } @SuppressWarnings("rawtypes") public static void fn() { Object[] elements =new Object[1000]; for(int i = 0; i < elements.length; i++) { /*用于跟踪方法调用的代理对象*/ Integer value = i + 1; InvocationHandler handler = new TraceHandler(value); //调用处理器,即实现了InvocationHandler接口的类对象。 Class[] interfaces = new Class[] { Comparable.class }; //Class对象数组 Object proxy = Proxy.newProxyInstance(null, interfaces, handler); elements[i] = proxy; } Integer key = new Random().nextInt(elements.length) + 1; int result = Arrays.binarySearch(elements, key); if(result >= 0) { System.out.println(elements[result]); } } public static void main(String[] args) { fn(); /*Object value = "xxxxx"; InvocationHandler handler = new TraceHandler(value); Class[] interfaces = new Class[] { Comparable.class }; Object proxy = Proxy.newProxyInstance(null, interfaces, handler);*/ }}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表