Bien le bonjour le forum !

j'ai une question super importante pour mon projet et pour moi même :

j'ai du pour mon projet récupérer du très vieux code (datant de java 1.2) qui me pose de gros problèmes :

en effet ce code génère très vite des erreurs à l'execution, et certaines erreurs je ne sais pas trop comment bien les corriger, en effet voici un code super réduit :

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
28
29
30
31
32
33
34
35
36
37
38
39
40
public class Plop extends JPanel
{
    private final Fills _fills = new Fills();
    private final Colors _colors = new Colors();
 
    public Plop()
    {
        ...
    }
 
    public void uneMethod()
    {
        _colors.autreMethode();
    }
 
    private final class Colors
    {
        private boolean att = false;
 
        Colors()
        {
            ...
        }
 
        public void autreMethode()
        {
            ...
        }
    }
 
 
    private final class Fills
    {
        private Toto _info	= Toto(_colors.att);
 
        Fills()
        {
        }
    }
}
Vous remarquerez très vite que ce code à l'execution génère une NullPointerException sur la ligne qui permet d'initialiser Toto en utilisant _colors, en effet à ce moment, le code n'est qu'à la première ligne du code, et donc _colors n'est pas encore initilalisé

Je sais comment corriger ce code vite fait, il suffit d'intervertir les deux lignes d'init (ainsi _color est initialisé avant _fills) mais si pour une raison ou une autre on venait à réintervertir les lignes, on retombe dans le même problème.

Comment faudrait-il faire pour recoder cette classe de manière propre ?

Avec des init à null et toutes les init dans le constructeur ?

Autrement ?

Merci d'avance.