J'ai donc été le brossage de mes compétences Java comme de la fin et ont trouvé un certain nombre de fonctionnalités que je ne connaissais pas auparavant. Statique et de l'Instance Initialiseurs sont deux de ces techniques.
Ma question est de savoir quand serait-on utiliser un initialiseur au lieu d'inclure le code dans un constructeur? J'ai pensé à un couple des possibilités évidentes:
statique/instance initialiseurs peut être utilisé pour définir la valeur de "finale" statique/variables d'instance alors qu'un constructeur ne peut pas
les initialiseurs statiques peuvent être utilisées pour définir la valeur de toutes les variables statiques dans une classe, qui devrait être plus efficace que d'avoir un "si (someStaticVar == null) // faire quelque chose" bloc de code au début de chaque constructeur
Deux de ces cas, supposons que le code nécessaire à l'ensemble de ces variables est plus complexe qu'une simple "variable = valeur", sinon il n'y aurait pas de raison d'utiliser un initialiseur au lieu de simplement la définition de la valeur lors de la déclaration de la variable.
Cependant, alors que ce ne sont pas trivial gains (surtout la possibilité de définir une variable finale), il semble qu'il y a un nombre assez limité de situations dans lesquelles un initialiseur doit être utilisé.
On peut certainement utiliser un initialiseur pour beaucoup de ce qui est fait dans un constructeur, mais je ne vois vraiment pas la raison de le faire. Même si tous les constructeurs d'une classe partagent une grande quantité de code, l'utilisation d'un privé fonction initialize() semble faire plus de sens pour moi que d'utiliser un initialiseur, car il n'est pas de vous enfermer dans avoir que le code exécuté lors de l'écriture d'un nouveau constructeur.
Ai-je raté quelque chose? Il y a un certain nombre d'autres situations dans lesquelles un initialiseur doit être utilisé? Ou est-il vraiment juste assez limitée de l'outil pour être utilisé dans des situations très spécifiques?