Il vaut mieux eviter d'avoir des constructeurs qui s'appellent entre eux
parce que ca rend la relecture difficile.  Quand tu essaieras de relire
ton code, tu te demanderas quel constructeur est celui qui fait
"reellement" le boulot.

Je recommande l'utilisation d'une methode privee, e.g. init(), vers
laquelle tu fais converger tous tes constructeurs.  Tu trouveras
davantage de details a:

http://freeroller.net/page/cbeust/20021017

Independamment du fait que je pense que c'est une bonne habitude a
avoir, ca devrait resoudre ton probleme.

-- 
Cedric
http://beust.com/weblog


> -----Original Message-----
> From: Aurelien Mazurie [mailto:aurelien.mazurie@;free.fr] 
> Sent: Tuesday, October 29, 2002 4:56 AM
> To: [EMAIL PROTECTED]
> Subject: Polymorphisme de constructeur
> 
> 
> 
>       Bonjour � tous,
>       J'ai essay� de trouver la r�ponse dans "Thinking In 
> Java 3", mais je 
> n'ai pas trouv�... Voil� ma question: j'ai plusieurs 
> constructeurs dans 
> une classe, dont certains font appel les uns aux autres. Par exemple:
> 
>       private MaClasse()              // Constructeur 
> principal (de base)
>               {
>                       // routines d'initialisations...
>               }
> 
>       public MaClasse(String[] ID)    // Constructeur 
> effectivement accessible
>               {
>                       this();         // appel au 
> constructeur "de base"
>                       // traitement de l'argument ID...
>               }
> 
>       public MaClasse(Objets[] obj)   // Autre possibilit� 
> d'accession au 
> constructeur
>               {
>                       // cr�ation d'un tableau String[] ID � 
> partir de Objets[]
>                       String[] ID = ...
>                       this(ID);
>               }
> 
>       Vous voyez ce que je veux faire ? J'ai deux fa�on 
> d'indiquer � ma 
> classe, pour son initialisation, un tableau. Soit c'est un tableau de 
> String, soit c'est un tableau d'objets � partir duquel je g�n�re le 
> tableau de String.
>       Le probl�me c'est qu'� la compilation on me dit que le 
> constructeur 
> MaClasse(Objets[] obj) n'est pas valide car il fait des op�rations 
> AVANT l'appel au constructeur this(ID), qui est cens� �tre la 
> premi�re 
> chose appell�e... Or j'ai besoin de cr�er le tableau de 
> String avant de 
> l'injecter dans le constructeur capable de le g�rer.
>       Quelqu'un sait-il comment r�soudre le probl�me ?
> 
>       Aur�lien Mazurie
> 

Répondre à