JAVA代理练习(coreJava中的例子)

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]);
        }

    }
}

猜你喜欢

转载自blog.csdn.net/qq_33888187/article/details/79928039