Bonjour,
J'ai un petit problème avec le singleton...
J'ai une classe singleton OpLendings qui initialise un autre singleton (OpFilms) dans ses variables d'instances. Jusque là pas de problèmes, sauf que OpFilms a aussi un OpLendinfs dans ses variables d'instances...
Vous imaginez donc le problème... J'ai une jolie StackOverflowError.
Bien sûr une solution serait de ne pas initialiser le singleton en variable d'instance mais de l'initialiser à la première utilisation ou alors de ne pas l'initialiser du tout et de toujours faire référence à getInstance()...
Vous avez une autre idée ? Parce que ces manières de faire ne me conviennent pas tout à fait...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 public class OpLendings { /* Instances */ private OpFilms films = OpFilms.getInstance(); /* Singleton's instance */ private static OpLendings instance = null; private OpLendings(){ super(); } public static OpLendings getInstance(){ if(instance == null){ instance = new OpLendings(); } return instance; } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 public class OpFilms { //Liste des films private DataStock<OdFilmImpl> films = null; private DataStock<OdFilmImpl> displayList = null; /* Singletons */ private DatabaseManager dataBase = DatabaseManager.getInstance(); private MyLogger logger = MyLoggerFactory.getLogger(this.getClass()); /* Instances */ private OpLendings emprunts = OpLendings.getInstance(); /* Singleton's instance */ private static OpFilms instance = null; private OpFilms(){ super(); } public static OpFilms getInstance(){ if(instance == null){ instance = new OpFilms(); } return instance; } }
Partager