📜  打印 java 对象继承的类 - Java (1)

📅  最后修改于: 2023-12-03 15:10:00.969000             🧑  作者: Mango

打印 java 对象继承的类 - Java

在 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