package com.zhangxueliang.demo;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.ArrayList;
import java.util.List;
/**
* 笔试题:写一个ArrayList的动态代理类 反射
*/
public class ProxyTest {
public static void main(String[] args) {
List<String> list=new ArrayList<>();
ClassLoader classLoader = list.getClass().getClassLoader();
Class<?>[] interfaces = list.getClass().getInterfaces();
List<String> listProxy = (List<String>) Proxy.newProxyInstance(classLoader, interfaces,
(Object proxy, Method method, Object[] args0)->{
return method.invoke(list,args0);
}
);
/*
List<String> listProxy = (List<String>) Proxy.newProxyInstance(classLoader, interfaces,
new InvocationHandler() {
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
return method.invoke(list, args);
}
}
);
*/
listProxy.add("我是动态代理对象添加的元素");
System.out.println(list);
}
}
笔试题:写一个ArrayList 的动态代理类
最新推荐文章于 2022-09-05 10:46:11 发布