Bonjour,

Je trouve l'écriture des singletons en Java relativement chiante, qui plus est quand il s'agit de faire du multithread, et je m'étonne du côté bricolage de la manoeuvre puisqu'à aucun moment la JVM n'est au courant de cette "caractéristique" de la classe...

N'y a-t-il pas un moyen à l'aide des énumérations de Java 5 de faire que la JVM assure comme une grande l'unicité de l'instance? Je m'explique :

Au lieu d'utiliser :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
public class MonSingleton {
  private static MonSingleton instanceUnique;
  private MonSingleton() { ... }
  public static MonSingleton getInstance() {
    if (instanceUnique == null)
      instanceUnique = new MonSingleton();
    return instanceUnique;
  }
...
}
Utiliser une énumération JSE5 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
public enum MonSingleton {
  INSTANCE;
  MonSingleton() { ... }
 
  // Juste pour faire zoli
  public static MonSingleton getInstance() { return INSTANCE; }
...
}
Est-ce que c'est une bonne idée? Pourquoi?
Ou alors j'ai rien compris à l'utilisation des énums?

Merci les zamis
++