getClass()
Javaでは、基本クラスとして使用されるクラスのコンストラクター内で呼び出されると、基本クラスのクラスではなく、派生クラスに関する情報が提供されると想定しても安全ですか?
動作するように見えますが、必ずしも安全であるとは限りません。たとえば、次の 2 つのクラスがあるとします。
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();
}
}
main()
Derived クラスでメソッドを実行すると、出力されます: Derived
(これは私が望んでいたことです)。しかし、JVM 間でその動作を信頼できますか?