Следующий код, написанный на Java-9, запущен, дает мне очень странное и забавное исключение в время выполнения:
Exception in thread "main" java.lang.NoSuchFieldError: super
at A$C.test(A.java:15)
at A.main(A.java:5)
Код:
public class A {
public static void main(String[] args) {
new C().test();
}
interface B {
private void test() {
}
}
static class C implements B {
void test() {
B.super.test();
}
}
}
Мне интересно: он спроектирован так, или, в идеале, этот код не должен компилироваться, и поэтому это ошибка компилятора? (Я лично считаю, что это ошибка ).
UPD: отправлена ошибка, ID: 9052188
UPD-2: Похоже B.super.test()
, как правило, является допустимым строительство, потому что если test()
метод default
чем он работает отлично. Этот факт только усложняет ситуацию.