В 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();
}
}
Когда я запускаю метод main()
в классе Derived, он печатает: Derived
(именно это я и надеялся). Но могу ли я полагаться на это поведение в JVM?