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

ᴇʟᴇ*_*ᴀтᴇ 17 java constructor

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

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

public class Parent {
    public Parent() {
        System.out.println(getClass().getName());
    }
}
Run Code Online (Sandbox Code Playgroud)

和:

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

    public static void main(String... args) {
        new Derived();
    }
}
Run Code Online (Sandbox Code Playgroud)

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

ass*_*ias 15

getClass是一个Object方法,并返回运行时this:

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

所以,是的,它将永远回归Derived.