哪个类在基类的构造函数内报告 getClass()

2022-09-03 02:21:08

在Java中,是否可以安全地假设在用作基类的类的构造函数内部调用将提供有关派生类的信息,而不是基类的类?getClass()

它似乎有效,但我想这并不一定意味着它是安全的。例如,如果我有以下两个类:

public class Parent {
    public Parent() {
        System.out.println(getClass().getName());
    }
}

和:

public class Derived extends Parent {
    public Derived() {
        super();
    }

    public static void main(String... args) {
        new Derived();
    }
}

当我在 Derived 类中运行该方法时,它会打印:(这是我所希望的)。但是,我可以跨 JVM 依赖这种行为吗?main()Derived


答案 1

getClass是 的方法之一,并返回 this运行时Object

返回此对象的运行时类。返回的 Class 对象是由所表示类的静态同步方法锁定的对象。

所以,是的,它总是会回来。Derived


答案 2