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