在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的这种行为吗?
答案 0 :(得分:14)
getClass
是Object
方法之一and returns the runtime class of this
:
返回此Object的运行时类。返回的Class对象是由所表示的类的静态同步方法锁定的对象。
是的,它总会返回Derived
。