“java.lang.NoSuchFieldError: super” exception - 编译器中的 bug?
2022-09-02 22:26:22
下面用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