Как стать автором
Обновить

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

Время на прочтение1 мин
Количество просмотров1.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
Теги:
Хабы:
+3
Комментарии17

Публикации

Изменить настройки темы

Истории

Работа

Java разработчик
342 вакансии

Ближайшие события

PG Bootcamp 2024
Дата16 апреля
Время09:30 – 21:00
Место
МинскОнлайн
EvaConf 2024
Дата16 апреля
Время11:00 – 16:00
Место
МоскваОнлайн
Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн