Le Jeudi 31 Octobre 2002 15:29, Aurelien Mazurie a �crit :

> [...]
> mais quid de variables plus complexes ? Mon probl�me c'est que je
> n'arrive pas (ne sais m�me pas si c'est possible !) � initialiser une
> structure plus complexe, correspondant � un tableau d'objets simples.

C'est passeque tu penses trop "variable" et pas assez "objet" ! (et que en 
java ce n'est pas possible de faire ce que tu souhaites).

Recherche donc des r�gles g�n�rales d'initialisation et de gestion de tes 
objets, et �crit le code qui va bien pour le faire. Si tu as besoin d'un 
tableau initialis� de telle et telle fa�on, c'est sans doute que dans le 
domaine que tu traites il y a un objet collection, et que les diff�rents 
�l�ments qui le composent ont telle et telle relation entre eux.

Bon, foin des gros discours, des solutions, maintenant :


> Voil� ce que j'essaye de faire:
>
> Ca c'est mon objet de base:
>
>    private static class TypeInfo
>     {
>      public int ID;
>      public String name;
>      public int groupID;
>     }
>
> Et voil� le tableau (toujours static), que je cherche � cr�er (quelques
> tentatives de syntaxes sont indiqu�es):
>
>    private static TypeInfo[] types =
>     {
>      {1, "foo", 1}            // ne marche pas...
>      (1, "foo", 1)            // ne marche pas non plus...
>      TypeInfo() {1, "foo", 1} // idem...
>

En _supposant_ que tu aies raison de cr�er des classes avec variables 
publiques - je n'ai rien contre, des fois c'est ce qu'il y a de mieux � faire 
-, ton probl�me laisse supposer que tu as tout de m�me besoin d'initialiser 
cet objet dans un certain �tat. Tu �criras donc par exemple :

class TypeInfo
{
 static TypeInfo construcFoo()
 {
  TypeInfo ti;

  ti = new TypeInfo();
  ti.ID = 1;
  ... etc ...
  return ti;
 }
}

Puis, pour l'init :

TypeInfo[] tab = {TypeInfo.construcFoo(), TypeInfo.construcFoo(), 
TypeInfo.construcFoo(), TypeInfo.construcFoo(), TypeInfo.construcFoo(), 
TypeInfo.construcFoo(), TypeInfo.construcFoo(), TypeInfo.construcFoo(), 
TypeInfo.construcFoo(), TypeInfo.construcFoo(), TypeInfo.construcFoo(), 
TypeInfo.construcFoo(), TypeInfo.construcFoo(), TypeInfo.construcFoo(), 
TypeInfo.construcFoo()};

(c'est pas tr�s �l�guant).


> Grr... Quand je pense que c'�tait l'enfance de l'art en C/C++...
> Quelqu'un sait-il comment faire �a en Java ? Je ne veux pas avoir �
> initialiser ce tableau en passant par un constructeur (c'est un static,
> je veux pouvoir y acc�der sans instancier la classe qui l'englobe).
>

Tu DOIS passer par un constructeur. Si c'est un static, en supposant qu'il y 
ait une classe qui l'englobe, tu peux y acc�der ; mais si tu mets la 
d�finition en private (private static class TypeInfo), c'est un peu louf : le 
seul moyen d'y acc�der serait depuis un objet de la classe englobante, objet 
qui existe donc d�j�, donc pourquoi voudrais-tu l'instancier ?

(� moins que tu n'utilisasses que des objets statics ?? Ce ne serait pas 
retour au C++, alors, mais retour au C ?... Tr�s bon language, cela �tant 
dit).

A+.


-- 
SARL diaam informatique - 04 50 77 12 60
Ingenierie, d�veloppements de syst�mes d'information
http://www.diaam-informatique.com


Répondre à