📅  最后修改于: 2023-12-03 15:10:00.969000             🧑  作者: Mango
在 Java 中,每个对象都是某个类的实例,而且每个类都有一个父类。因此,一个对象的类其实就是它的类层次结构中的最底层的那个类,也就是其直接或间接的父类。如果想要打印一个 Java 对象继承的类,可以使用 getClass()
方法获取对象的类,然后调用 getSuperclass()
方法获取其直接父类,如下所示:
Object obj = new Object();
Class<?> objClass = obj.getClass();
Class<?> superClass = objClass.getSuperclass();
System.out.println(superClass);
以上代码可输出 java.lang.Object
,因为 Object
类是 Java 中所有类的超类,而 obj
对象是 Object
类的实例。
同样地,在一个类中也可以使用 super.getClass().getSuperclass()
方法来获取其直接父类,如下所示:
public class SubClass extends SuperClass {
public void printSuperClass() {
Class<?> superClass = super.getClass().getSuperclass();
System.out.println(superClass);
}
}
以上代码中,SubClass
继承自 SuperClass
,并且 printSuperClass()
方法打印 SuperClass
的直接父类。
需要注意的是,如果一个类没有显式地指定父类,那么它默认继承自 java.lang.Object
,因此我们无法通过 getSuperclass()
方法获取其父类。如果这种情况下想要判断一个类是否继承自 Object
,可以使用 getClass().getSuperclass() == null
的方式来判断,如下所示:
public class MyClass {
// ...
}
public class OtherClass {
public void printMyClassSuperClass() {
Class<?> myClass = MyClass.class;
if (myClass.getSuperclass() == null) {
System.out.println("MyClass 继承自 Object");
} else {
System.out.println(myClass.getSuperclass());
}
}
}
以上代码中,如果 MyClass
没有显式地指定父类,那么输出语句将会打印 MyClass 继承自 Object
。
获取 Java 对象继承的类需要使用 getClass()
方法和 getSuperclass()
方法,对于没有显式指定父类的类,可以通过判断其父类是否为 null
来判断其是否继承自 Object
。