黑马程序员技术交流社区

标题: 类代理问题 [打印本页]

作者: hjqfornew    时间: 2016-12-27 09:22
标题: 类代理问题
import java.lang.reflect.Proxy;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

public class Demo23_proxy {

        public static void main(String[] args) {

                ArrayList<Integer> al=new ArrayList<>();
               
                MyInvocationHandler mih=new MyInvocationHandler(al);
               
                List<Integer> list= (List<Integer>) Proxy.newProxyInstance
                                (al.getClass().getClassLoader(), al.getClass().getInterfaces(), mih);
               
                list.add(132);
        }

}


import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.util.concurrent.TimeUnit;

public class MyInvocationHandler implements InvocationHandler {
        private Object ob;
       
        public MyInvocationHandler(Object ob) {
                super();
                this.ob =  ob;
        }

        @Override
        public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
                long start=System.currentTimeMillis();
                 TimeUnit.MILLISECONDS.sleep(10);
                method.invoke(ob, args);
                long end=System.currentTimeMillis();
                System.out.println("方法运行时间为:"+(end-start)+"毫秒");
                return null;
        }

}
运行错误空指针异常,NullPointerException。哪位大神帮忙看一下。
作者: 396095936    时间: 2016-12-27 10:33
是不是你invoke方法返回的是null,add方法返回值是boolean。
null拆箱导致的空指针异常

作者: 396095936    时间: 2016-12-27 10:37
没说的很明白,就是返回的一个是object的null,一个返回值是基本数据类型boolean,然后jdk1.5特性拆装箱,拆箱null导致报空指针异常。
我没学到proxy呢,我看你代码猜的,你去试下。

作者: 396095936    时间: 2016-12-27 10:38
我有的英语单词可能打错了,人懒,见谅见谅

作者: hjqfornew    时间: 2016-12-28 02:37
396095936 发表于 2016-12-27 10:33
是不是你invoke方法返回的是null,add方法返回值是boolean。
null拆箱导致的空指针异常
...

果然是这样,谢谢
作者: hjqfornew    时间: 2016-12-28 02:38
396095936 发表于 2016-12-27 10:33
是不是你invoke方法返回的是null,add方法返回值是boolean。
null拆箱导致的空指针异常
...

果真是这样的,谢谢
作者: 相反人生    时间: 2016-12-28 18:19
新人表示看不懂    怎么办
作者: 396095936    时间: 2016-12-28 22:18
hjqfornew 发表于 2016-12-28 02:37
果然是这样,谢谢

不谢不谢。。已经决定学c了,加油啊哥们打好基础

作者: hjqfornew    时间: 2016-12-29 00:07
相反人生 发表于 2016-12-28 18:19
新人表示看不懂    怎么办

很快就可以看懂了
作者: 袁志娜    时间: 2017-1-1 21:11





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2