黑马程序员技术交流社区

标题: 关于反射Field的疑惑? [打印本页]

作者: 昝文萌    时间: 2013-9-6 19:38
标题: 关于反射Field的疑惑?
本帖最后由 昝文萌 于 2013-9-7 12:13 编辑

Field.getType()==String.class 于Field.getType().equals(String.class)这里用“==”和equals有什么区别?String.class它表示的是一个变量吗,也就是对象的引用吗?我想他们能用等号比较,肯定代表就是地址值,我想它应该是一个特殊的引用变量用来指示Sting字节码的地址的?求大神解一下惑!
作者: 李锡碧    时间: 2013-9-6 19:44
本帖最后由 李锡碧 于 2013-9-6 19:51 编辑

eques用于字符串的值比较。
==,如果是基本类型比较值,如果是对象类型则比较内存地址
String.class它表示String类的class对象
作者: 胡智    时间: 2013-9-6 19:48
首先Field.getType()这个方法,返回的是一个Class类型的对象。
String.class是String类的class对象。获取某个类的class对象有三种方法,视屏里有说。
两个对象用==判断,是判断两个对象的地址值是否一致。
Field.getType().equals(String.class),这里调用的是Class类对象中的equals()方法,因为这个equals方法没有被复写,直接继承的Object类,所以也是比较的地址值。
作者: 张歆明    时间: 2013-9-6 20:02
胡智 发表于 2013-9-6 19:48
首先Field.getType()这个方法,返回的是一个Class类型的对象。
String.class是String类的class对象。获取某 ...

正解!!!!

作者: 薛鹏鹏    时间: 2013-9-6 23:03
如果您的问题已经解决
请更改分类未解决为已解决
保持队形,谢谢合作

详情参考 如何修改分类


作者: dunwu    时间: 2013-9-6 23:57
有够快的    萌萌   哥在北京等你




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