1个错误,2个提示,希望能帮到你,如下面代码所示。
- public class Test2{
-
- public static void main(String[] args)throws Exception{
- //1.把ArrayList改成List或是Collection都行.因为JVM生成的动态类必须实现一个或多个接口。而ArrayList不是接口
- List proxy=(List)Proxy.newProxyInstance(
- ArrayList.class.getClassLoader(),
- // new Class[]{Serializable.class,Cloneable.class,Iterable.class,Collection.class,List.class,RandomAccess.class},
- //2.你上一行代码可以简化成下面这行代码
- ArrayList.class.getInterfaces(),
- new InvocationHandler() {
- //3.把这行代码从下面提上来会更好,在在invoke方法里面的话,就是产生了3个不同的ArrayList对象.
- ArrayList target=new ArrayList();
- @Override
- public Object invoke(Object proxy, Method method, Object[] args)
- throws Throwable {
-
-
- long beginTime=System.currentTimeMillis();
- Object retVal=method.invoke(target, args);
- Thread.sleep(1000);
- long endTime=System.currentTimeMillis();
- System.out.println(method.getName()+"Running "+(endTime-beginTime));
-
- return retVal;
- }
- });
- proxy.add("abc");
- proxy.add("def");
- proxy.add("ghi");
-
- }
-
- }
复制代码 |