, Может случиться так, что он будет закрыт как "не исправит" или что-то еще.

отрим следующий код:

public class A {
    public static void main(String[] args) {
        Runnable test1 = ((I)(new I() {}))::test;  // compiles OK
        Runnable test2 = ((new I() {}))::test;     // won't compile 
    }

    interface I {
        private void test() {}
    }
}

Я не совсем понимаю ... Я понимаю, чтоtest() методчастный, Но что изменится, если мы приведем анонимный класс к его интерфейсу((I)(new I() {}))? Точнее, я хотел бы увидеть конкретную точку JLS, которая позволяет этот трюк.

Постскриптум Я сообщил об этом как об ошибке компилятора (ID: 9052217). Мне кажется, чтоRunnable test2 = ((new I() {}))::test; должно быть хорошо скомпилировано в этом конкретном случае.

P.P.S. До сих пор была создана ошибка на основе моего отчета:https://bugs.openjdk.java.net/browse/JDK-8194998 , Может случиться так, что он будет закрыт как "не исправит" или что-то еще.

Ответы на вопрос(4)

Ваш ответ на вопрос