public class ProxyTest { static class TestInvocationHandler implements InvocationHandler{ private Object target; public TestInvocationHandler(Object obj){ target = obj; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { if(method.getDeclaringClass()!=Object.class){ //不打印object類申明方法的調用信息 System.out.print(target.toString()+"."+method.getName()+"("); if (args != null) { for (int i = 0; i < args.length; i++) { System.out.print(args[i].toString()); if (i < args.length - 1) { System.out.print(","); } } } System.out.println( ")" ) ; } Object o = method.invoke(target,args); return o; } } public static void main(String[] args) { Object[] arr = new Object[1000]; for(int i =0;i<arr.length;i++ ){ Integer integer = new Integer(i); InvocationHandler in = new TestInvocationHandler(integer); Object proxy = Proxy.newProxyInstance(null,new Class[]{Comparable.class},in); arr[i] = proxy; } Integer i = new Random().nextInt(arr.length); int result = Arrays.binarySearch(arr,i); if(result>=0){ System.out.print(arr[result]); } } }
JAVA代理练习(coreJava中的例子)
最新推荐文章于 2021-02-23 20:39:03 发布