Con un ejemplo simple como el suyo, no puede pasar nada malo. Sin embargo, es posible para que un campo final
sea visible como no inicializado si utiliza prácticas cuestionables, como llamar a un método sobrescribible en su constructor. Por ejemplo, el siguiente programa imprime "Mi color favorito es nulo", aunque hace referencia a la variable final favouriteColour
, que se establece en "blue"
en el constructor.
abstract class SuperClass {
final String favouriteColour;
SuperClass() {
announceFavouriteColour();
favouriteColour = "blue";
}
abstract void announceFavouriteColour();
}
public class FinalTest extends SuperClass {
void announceFavouriteColour() {
System.out.println("My favourite colour is " + favouriteColour);
}
public static void main(String[] args) {
new FinalTest();
}
}
Gracias! Y esto lleva a http://stackoverflow.com/questions/2547713/why-static-fields-are-not-initialized-in-time –
Esto es de hace mucho tiempo, pero solo quiero decir que aunque esto puede Sucede, me sucede a mí. Lo único que se me ocurre es que es porque es GWT con lo que estoy tratando, por lo que es Java el que se compila en forma cruzada con JScript. – Jamie