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

时间:2012-09-28 10:45:00

标签: java constructor

在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类中运行main()方法时,它会打印:Derived(这是我所希望的)。但我可以依赖JVM的这种行为吗?

1 个答案:

答案 0 :(得分:14)

getClassObject方法之一and returns the runtime class of this

  

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

是的,它总会返回Derived