“Java.lang.NoSuchFieldError: super” excepción-error en el compilador?
javac java-9 (1)
El siguiente código escrito en Java-9 que se ejecuta me da una excepción muy rara y divertida en el tiempo de ejecución :
Exception in thread "main" java.lang.NoSuchFieldError: super
at A$C.test(A.java:15)
at A.main(A.java:5)
El código:
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();
}
}
}
Me pregunto: ¿está diseñado para que, o idealmente, este código no se compile, y por lo tanto este es un error del compilador? (Personalmente creo que esto es un error ).
UPD : Envió un error, ID: 9052188
UPD-2 : Parece que B.super.test()
es generalmente una construcción válida, porque si el método test()
es el default
, funciona bien. Este hecho solo complica las cosas.
Al final, este problema fue admitido como error por el equipo de Soporte de Desarrolladores de Java, aquí hay un enlace: https://bugs.java.com/bugdatabase/view_bug.do?bug_id=JDK-8194847