详解Java的getSuperclass()方法:返回表示此 Class 所表示的实体

  • Post category:Java

getSuperclass()是Java中的一种反射方法,它返回其直接超类的Class对象,也就是获取当前类的父类。以下是getSuperclass()方法的完整攻略及代码示例:

方法定义

public final Class<? super T> getSuperclass()

方法返回值

返回一个Class对象,它表示该类所表示的对象的超类。

代码示例

示例1

public class Animal {
    // ...
}

public class Cat extends Animal {
    // ...
}

public class Main {
    public static void main(String[] args) {
        Class catClass = Cat.class;
        Class superCatClass = catClass.getSuperclass();
        System.out.println(superCatClass.getName()); // 输出:Animal
    }
}

在上述示例中,我们定义了三个类Animal、Cat和Main。Animal是Cat的父类,而Main中调用了getSuperclass()方法来获取Cat类的父类。程序输出Animal类的完整类名。

示例2

public class Main {
    public static void main(String[] args) {
        Class stringClass = String.class;
        Class<?> superClass = stringClass.getSuperclass();
        System.out.println(superClass); // 输出:null
    }
}

虽然String类在Java中是非常重要的类,但它并没有直接继承任何类。因此,String类通过getSuperclass()方法返回null,表明它没有超类。

通过以上两个代码示例,我们可以看出:getSuperclass()方法可以用于获取类的父类,但是在某些情况下会返回null。我们可以通过判断返回值是否为空来确定该类是否有父类。同时,我们还要注意:获取父类的可见性跟子类与父类在不同包中的情况有关。在子类和父类在不同包中时,只有父类的public和protected方法才能被子类继承。