Возникла у меня одна задумка, которая может мне приятно облегчить программирование некоторых штук (в реальном проекте).
Но будет ли это работать, я не знал. В результате чего я накидал маленький тест чтобы проверить свои догадки.
После написания этого теста, обнаружил, что этот примерчик может быть вполне интересной и познавательной java-задачкой.
Вот такая задачка получилась:
Вопрос — что будет выдано в консоль после выполнения этой программки?
Но будет ли это работать, я не знал. В результате чего я накидал маленький тест чтобы проверить свои догадки.
После написания этого теста, обнаружил, что этот примерчик может быть вполне интересной и познавательной java-задачкой.
Вот такая задачка получилась:
public class A {
private static A staticInstance;
public A() {
staticInstance = this;
}
public void f() {
System.out.println("A.f() called");
}
static class B extends A {
public B() {
super();
throw new RuntimeException();
}
public void f() {
System.out.println("B.f() called");
}
}
public static void main(String[] args) {
try {
new B();
} catch (Throwable t) {
/*do nothing*/
}
if(staticInstance == null) {
System.out.println("staticInstance is null");
} else {
staticInstance.f();
}
}
}
Вопрос — что будет выдано в консоль после выполнения этой программки?
- staticInstance is null
- A.f() called
- B.f() called
