¿Por qué este programa Java se compila:¿El error de compilación de Java depende de si el nombre de la variable estática está calificado?
public class xx {
public static final Object obj;
static {
// obj = null; // this compiles
xx.obj = null; // this doesn't
}
}
con este error:
$ javac xx.java
xx.java:5: cannot assign a value to final variable obj
xx.obj = null; // this doesn't
^
1 error
$ javac -version
javac 1.6.0_33
cuando, si reemplazo xx.obj = null
con obj = null
(como se alude en el comentario) que se compila.
Pensé que el xx.
prefijo de nombre de clase era más o menos sintaxis ... ¿es esto un error en el compilador o en la especificación del lenguaje? :)
Probablemente un error del compilador (que no ha mordido suficiente gente hasta ahora para atraer suficiente atención). ¿Alguien puede probar versiones JDK más antiguas y nuevas? Y también el compilador de Eclipse? – Thilo
JDK 7 mismo error aquí. –