下面用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();
}
}
}
我想知道:是这样设计的,还是理想的情况下,这段代码不应该编译,因此这是一个编译器错误?(我个人认为这是一个bug)。
UPD:提交了一个bug,ID : 9052188
UPD-2:看起来B.super.test()
通常是一个有效的构造,因为如果test()
方法是default
,那么它工作得很好。这个事实只会使事情变得更复杂。
发布于 2018-01-09 21:37:19
最后,这个问题被团队承认为一个bug,下面是一个链接:id=JDK-8194847
https://stackoverflow.com/questions/48175532
复制相似问题