代理Proxy.newproxyinstance

来源:互联网 发布:ntfs for mac价格 编辑:程序博客网 时间:2024/04/26 08:47
public class ProxyTest {    public static void main(String[] args) {        Object [] elements=new  Object[1000];        for (int i = 0; i < elements.length; i++) {            Integer value=i+1;            InvocationHandler handler=new TraceHandler(value);            Object proxy=Proxy.newProxyInstance(null,new Class[]{Comparable.class},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]);    }}class TraceHandler implements InvocationHandler{    private Object target;    public TraceHandler(Object t){        target=t;    }    @Override    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(")");        Object j=method.invoke(target,args);        return j;    }}