Pull to refresh

Родилась задачка

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

Вопрос — что будет выдано в консоль после выполнения этой программки?
  1. staticInstance is null
  2. A.f() called
  3. B.f() called
Tags:
Hubs:
Total votes 7: ↑5 and ↓2+3
Comments17

Articles