Avec un exemple simple comme le vôtre, rien de mauvais ne peut arriver. Cependant, est possible pour qu'un champ final
soit visible comme non initialisé si vous utilisez des pratiques douteuses comme l'appel d'une méthode remplaçable dans votre constructeur. Par exemple, le programme suivant imprime "Ma couleur préférée est nulle", même s'il fait référence à la variable finale favouriteColour
, qui est définie sur "blue"
dans le constructeur.
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();
}
}
Merci! Et cela conduit à http://stackoverflow.com/questions/2547713/why-static-fields-are-not-initialized-in-time –
Ceci est d'il y a longtemps, mais je veux juste dire que même si cela peut Ça n'arrive pas, ça me concerne. La seule chose que je peux penser est que c'est parce que c'est GWT que j'ai affaire, donc c'est Java qui est compilé avec JScript. – Jamie