在Java中,我们可以使用两种方式来查看一个对象的类类型。第一种是使用Object的.getClass()方法,它返回一个Class对象;第二种是直接在类名后加上.class,它同样返回一个Class对象。但是,这两种方式返回的对象是不同的,不可以直接进行比较。下面是一个代码示例:
public class Main {
public static void main(String[] args) {
String str = "hello";
Class strClass1 = str.getClass();
Class strClass2 = String.class;
if (strClass1 == strClass2) {
System.out.println("getClass()和.class返回相同的对象");
} else {
System.out.println("getClass()和.class返回不同的对象");
}
}
}
运行结果为:getClass()和.class返回相同的对象。这是由于编译器会将.class转换为getClass()调用,因此它们返回的是相同的Class对象。但是,如果我们使用自定义类,这种情况可能会有所不同。因此,我们应该避免直接比较.getClass()和.class的返回值,而应该使用equals()方法进行比较。例如:
if (strClass1.equals(strClass2)) {
System.out.println("getClass()和.class返回相同的对象");
} else {
System.out.println("getClass()和.class返回不同的对象");
}