Salut les gens,

Voici un petit bout de code tout simple :

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
 
public abstract class AbstractClass {
    protected AbstractClass() { init(); }
    protected void init() { }
}
 
public class ClassImpl extends AbstractClass {
    private String var;
 
    public ClassImpl(String var) { this.var = var; }
 
    protected void init() {
        super.init();
        System.out.println("var=[" + var + "]");
    }
}
Si je fais "new ClassImpl("coucou")", ça affiche "var=[null]".

"Logique" quand on y réfléchit, mais pas génial quand on veut avoir deux méthodes init() afin de dissocier l'initialisation de la classe abstraite et l'initialisation de la classe concrète.

En fait, j'aimerais éviter d'appeler explicitement init() dans le constructeur de ClassImpl...quel est selon-vous la meilleure façon de résoudre ce problème ?

PS : non, je ne souhaite pas supprimer les méthodes init() et mettre le code directement dans le constructeur.

Merki !