База Hintsage

Программирование Java

Язык Java, JVM и экосистема серверной разработки.

Темы раздела

Выберите подраздел

Практика

Вопросы: Программирование Java

Почему этот фрагмент компилируется, хотя first используется при инициализации следующего ресурса?

class Demo {
    static class R implements AutoCloseable {
        R child() { return new R(); }
        public void close() { }
    }

    static void run() {
        try (R first = new R();
             R second = first.child()) {
            // работа с обоими ресурсами
        }
    }
}

Проверьте, будет ли вызван close(), если конструктор ресурса завершился исключением:

class Demo {
    static class R implements AutoCloseable {
        R() {
            System.out.println("construct");
            throw new RuntimeException("init");
        }

        @Override
        public void close() {
            System.out.println("close");
        }
    }

    public static void main(String[] args) {
        try (R r = new R()) {
        } catch (RuntimeException e) {
            System.out.println("caught");
        }
    }
}

Показано 120 из 403