0

Le code suivant a une erreur:variable aurait déjà été attribué

class A 
{ 

    private final String val; 

    public A(){ 
    this.val = null; 
    } 

    public A(String val){ 
    this(); 
    this.val = val; 
    } 
} 

l'erreur est « val variable peut déjà avoir été attribué

Y at-il une solution pour cette erreur sans ré-écrire tout Ceci est un exemple de travail minimum, si vous vous demandez "Quel code dans le constructeur par défaut", gardez à l'esprit qu'un exemple réel pourrait avoir beaucoup de code que vous ne le feriez pas. vouloir répéter dans d'autres constructeurs (assigner d'autres variables finales, etc.)

N'oubliez pas que c'est un exemple minimum, et le même problème existe avec un grand nombre de constructeurs.

Répondre

2

Vous enchaînez dans la mauvaise direction. Cela m'a pris un peu de temps pour comprendre, mais changez votre exemple comme suit:

class A 
{ 

    private final String val; 

    public A(){ 
    this(null); 
    } 

    public A(String val){ 
    this.val = val; 
    } 
} 
+0

Excellent point. Merci! –

+12

Vous vous sentez un peu schizophrène? –

+0

Qu'est-ce qui rend le chaînage d'origine incorrect? Y at-il quelque chose dans la spécification Java qui indique que vous ne pouvez pas enchaîner comme indiqué? –

Questions connexes