, Может случиться так, что он будет закрыт как "не исправит" или что-то еще.
отрим следующий код:
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 , Может случиться так, что он будет закрыт как "не исправит" или что-то еще.