用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:提交一个bug,ID:9052188
UPD-2 :它看起来像B.super.test()
通常是一个有效的建设,因为如果test()
方法是default
比它工作正常。这一事实只是使事情变得更加复杂。
最终这个问题被接纳为Java开发人员支持小组的错误,这里是一个链接:https://bugs.java.com/bugdatabase/view_bug.do?bug_id=JDK-8194847
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句