Je recompose du code hérité, mais a été troublé par la décision de conception et ne peux pas trouver les termes appropriés pour google cela. Mon prédécesseur utiliserait des blocs comme celui-ci:En Java, pourquoi avoir un bloc de code sans mots-clés, juste des accolades
public class ChildClass extends ParentClass {
{
inheritedVar = "someVal";
}
public ChildClass(){ /* constructor exists */ }
// rest of code
}
À quoi sert de déclarer un bloc de code sans mot-clé? Il ne se comporte pas comme un bloc statique, je ne crois pas. Est-ce une alternative à la définition dans le constructeur? Cela aurait-il un effet si une usine était utilisée (ce qui n'est pas le cas ici)? J'ai trouvé un fil connexe ici sur this happening in C mais le raisonnement (portée & déclaration de variable) n'a pas semblé pertinent à Java.
Des idées ou des idées sur le «pourquoi» de ce serait apprécié. Il est assez facile de re-factoriser cela, je suis juste curieux à ce stade.
+1 pour signaler l'utilisation correcte de ce bloc. – birryree
+1: Je suis d'accord avec les méthodes d'initialisation nommées. Cependant, étant donné qu'il n'y a qu'un seul constructeur, le point entier de ce bloc dans ma base de code semble plutôt inutile. – Riggy
@Riggy, c'est certainement redondant. – Mike