Возникла у меня одна задумка, которая может мне приятно облегчить программирование некоторых штук (в реальном проекте).
Но будет ли это работать, я не знал. В результате чего я накидал маленький тест чтобы проверить свои догадки.
После написания этого теста, обнаружил, что этот примерчик может быть вполне интересной и познавательной 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