obj.getClass().getName()==String.class.getName()都是获取的全限定类名进行比较。结果为true,
obj.getClass==String.class是进行class比较,记过也为true
如果将String换成其他类型有接口或者继承的话,结果就不一定了。
@org.junit.Test
public 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()就不一定会得到想要的结果