obj.getClass().getName()==String.class.getName()和obj.getClass==String.class的区别

来源:互联网 发布:linux 7 路由跟踪 编辑:程序博客网 时间:2024/05/19 06:15

obj.getClass().getName()==String.class.getName()都是获取的全限定类名进行比较。结果为true,

obj.getClass==String.class是进行class比较,记过也为true

如果将String换成其他类型有接口或者继承的话,结果就不一定了。

@org.junit.Testpublic void testName5() throws Exception {String aString="666";String name = aString.getClass().getName();String name2 = String.class.getName();System.out.println(name);System.out.println(name2);System.out.println(name==name2);Class<? extends String> class1 = aString.getClass();System.out.println(class1);System.out.println(class1==String.class);}

打印结果:

java.lang.String
java.lang.String
true
class java.lang.String
true


如果是同一个ClassLodader结果是无误的。2种方式皆可

如果不同的ClassLodader就需要注意了。使用obj.getClass==String.class是正确的。如果使用obj.getClass().getName()==String.class.getName()就不一定会得到想要的结果

阅读全文
0 0
原创粉丝点击