黑马程序员技术交流社区

标题: 在学习反射基础的时候,遇到一点问题 [打印本页]

作者: 阿布Yocan    时间: 2014-6-9 20:55
标题: 在学习反射基础的时候,遇到一点问题
本帖最后由 阿布Yocan 于 2014-6-9 22:31 编辑

  在学习得到字节码对应的实例对象的时候,张老师对代码进行了抛出异常,代码没问题,我试着去try catch一下Class cls3 = Class.forName("java.lang.String");系统报错,要我把变量cls3进行私有
第一个问题:这里为什么我要用cls1和cls2跟cls3做比较的时候,代码会报错?
  私优化cls3之后

第二个问题:为什么把cls3是私有化之后,打印比较的结果为false?
  自我感觉我的问题有点幼稚,但是确实不大懂,求解释,谢谢咯!
F:\1.jpg






作者: Boiled_Water    时间: 2014-6-9 21:07
Class cls3是局部变量,在下面的输出语句是访问不到,你把声明放到try语句外就行了
作者: 阿布Yocan    时间: 2014-6-9 21:13
Boiled_Water 发表于 2014-6-9 21:07
Class cls3是局部变量,在下面的输出语句是访问不到,你把声明放到try语句外就行了 ...

恩,我也发现了,刚把cls3声明在外面,成功了,谢谢你,小知识点用的不大溜,还需多用
                Class cls1 = str1.getClass();
                Class cls2 = String.class;
                Class cls3 = null;
                try {
                         cls3 = Class.forName("java.lang.String");
                } catch (ClassNotFoundException e) {
                        e.printStackTrace();
                }
                System.out.println(cls1 == cls2);
                System.out.println(cls1 == cls3);
                System.out.println(cls2 == cls3);




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