J'ai exécuté checkstyle sur mon code et je suis tombé sur la règle ExplicitInitializationCheck. Pour l'instant, je ne sais pas pourquoi c'est une mauvaise chose.
La règle dit :
Vérifie si une classe ou un membre d'objet est explicitement initialisé à la valeur par défaut pour son type (null pour les références d'objet, zéro pour les types numériques et char et faux pour les booléens.
Raisonnement : chaque variable d'instance est initialisée deux fois, à la même valeur. Java initialise chaque variable d'instance à sa valeur par défaut (0 ou null) avant d'effectuer toute initialisation spécifiée dans le code. Donc, dans ce cas, x est initialisé à 0 deux fois, et bar est initialisée à null deux fois. Donc il y a une légère inefficacité. Ce style de codage est un vestige du codage de style C/C++, et il montre que le développeur n'est pas vraiment sûr que Java initialise vraiment les variables d'instance aux valeurs par défaut.
Une initialisation explicite, même si c'est la valeur par défaut, ne rend-elle pas le code plus lisible ? Est-il possible que les valeurs par défaut changent avec les versions JDK, ou les fournisseurs JVM ? De plus, n'est-ce pas quelque chose que HotSpot ou même le compilateur corrigerait également ?