- package Proxy;
- import java.lang.reflect.InvocationHandler;
- import java.lang.reflect.Method;
- import java.lang.reflect.Proxy;
- import java.util.ArrayList;
- import java.util.Collection;
- public class Test {
- public static void main(String[] args) {
- final ArrayList arr = new ArrayList();
- Test t = new Test();
- System.out.println(t.getProxy(arr));
- //System.out.println(t.getProxy(arr).getClass().getName());
- }
- public Object getProxy(final Collection arr){
- Object proxy = Proxy.newProxyInstance(Collection.class.getClassLoader(),
- Collection.class.getInterfaces(), new InvocationHandler(){
- @Override
- public Object invoke(Object proxy, Method method, Object[] args)
- throws Throwable {
- System.out.println("调用代理");
- Object reVal = method.invoke(arr, args);
- return reVal;
- }
- });
- return proxy;
- }
- }
复制代码 System.out.println(t.getProxy(arr));//为什么这个调用了invoke。
//System.out.println(t.getProxy(arr).getClass().getName());//这里却没有调用invoke,还有哪些方法是不用调用invoke的。
|
|