Je suis statique à l'aide d'un bloc de code pour initialiser certains contrôleurs dans un regsitry j'ai. Ma question est donc, puis-je la garantie que cette statique bloc de code ne absolument être appelé qu'une seule fois lorsque la classe est chargée pour la première fois? Je comprends que je ne peux pas garantir quand ce bloc de code sera appelé, Im devinant son lorsque le chargeur de classe de la première charge. Je me rends compte que je pouvais synchroniser sur la classe dans la statique bloc de code, mais je pense que c'est effectivement ce qui se passe de toute façon?
Exemple de code Simple serait;
class FooRegistry {
static {
//this code must only ever be called once
addController(new FooControllerImpl());
}
private static void addController(IFooController controller) {
// ...
}
}
ou devrais-je le faire;
class FooRegistry {
static {
synchronized(FooRegistry.class) {
addController(new FooControllerImpl());
}
}
private static void addController(IFooController controller) {
// ...
}
}