Je vous expose mon problème.
Je précise que maintes recherches sur google
et dans les meilleurs librairies ne m'ont pas éclairées.
J'ai crée une classe pour simuler une énumération :
public final class NumeroCase {
private final String name;
public static final NumeroCase out = new NumeroCase("0ut");
public static final NumeroCase c1 = new NumeroCase("1"),
c2 = new NumeroCase("2"),
c3 = new NumeroCase("3"),
......
.....
C44 = new NumeroCase("44");
et pour l'emploi de tout ca tu peux faire une simple boucle: for (int i = 0; i < NumeroCase.getTableauExemplaires().length; i++) { NumeroCase unExemplaire = NumeroCase.getTableauExemplaires()[i]; System.out.println("" + unExemplaire); }
Mais cela signifie qu'il y'a une regle permettant de lier i et l'exemplaire n°i de NumeroCase...
"toto" a écrit dans le message news: 6ozVb.8584$
Arrghh...en fait ça ne marche pas.
Je ne veux pas accéder au constructeur de la classe d'énumération (et pour cause : il est privé)
Je veux accéder aux instances de cette classe i.e. : NumeroCase.c1, NumeroCase.c2...
En fait je voudrais un truc du genre. NumeroCase ci = NumeroCase.Ci
Si je fait : NumeroCase c1 = NumeroCase.c1...ça marche bien sûr.
Mais je vais pas faire 44 déclarations.
Donc je veux par exemple : NumeroCase c + toString(i) = NumeroCase.c + toString(i)
Je sais pas bien ce que tu veux faire reellement en fait...
Il faudrait que tu nous en dise + sur ton type enumere et ses valeurs.
J'ai pense a un truc comme ca en l'absence d'elements supplementaires:
public final class NumeroCase {
private static int NB_MAX = 5;
private final String name;
private static NumeroCase[] tableauNumeroCase = new NumeroCase[NB_MAX];
static {
for (int i = 0; i < NB_MAX; i++) {
tableauNumeroCase[i] = new NumeroCase("Exemplaire n°" + i);
}
}
et pour l'emploi de tout ca tu peux faire une simple boucle:
for (int i = 0; i < NumeroCase.getTableauExemplaires().length; i++) {
NumeroCase unExemplaire = NumeroCase.getTableauExemplaires()[i];
System.out.println("" + unExemplaire);
}
Mais cela signifie qu'il y'a une regle permettant de lier i et l'exemplaire
n°i de NumeroCase...
"toto" <mapson@tele2.fr> a écrit dans le message news:
6ozVb.8584$zm5.5730@nntpserver.swip.net...
Arrghh...en fait ça ne marche pas.
Je ne veux pas accéder au constructeur de la
classe d'énumération (et pour cause : il est privé)
Je veux accéder aux instances de cette classe
i.e. : NumeroCase.c1, NumeroCase.c2...
En fait je voudrais un truc du genre.
NumeroCase ci = NumeroCase.Ci
Si je fait :
NumeroCase c1 = NumeroCase.c1...ça marche bien sûr.
Mais je vais pas faire 44 déclarations.
Donc je veux par exemple :
NumeroCase c + toString(i) = NumeroCase.c + toString(i)
et pour l'emploi de tout ca tu peux faire une simple boucle: for (int i = 0; i < NumeroCase.getTableauExemplaires().length; i++) { NumeroCase unExemplaire = NumeroCase.getTableauExemplaires()[i]; System.out.println("" + unExemplaire); }
Mais cela signifie qu'il y'a une regle permettant de lier i et l'exemplaire n°i de NumeroCase...
"toto" a écrit dans le message news: 6ozVb.8584$
Arrghh...en fait ça ne marche pas.
Je ne veux pas accéder au constructeur de la classe d'énumération (et pour cause : il est privé)
Je veux accéder aux instances de cette classe i.e. : NumeroCase.c1, NumeroCase.c2...
En fait je voudrais un truc du genre. NumeroCase ci = NumeroCase.Ci
Si je fait : NumeroCase c1 = NumeroCase.c1...ça marche bien sûr.
Mais je vais pas faire 44 déclarations.
Donc je veux par exemple : NumeroCase c + toString(i) = NumeroCase.c + toString(i)
toto
OK.
La classe NumeroCase représente les cases d'un jeu de plateau.
La classe elle-même, ne me pose pas de problème, enfin je l'ai résolu par un copier/coller sur le web.
Le problème est qu'elle représente un type énuméré avec 38 valeurs : les 37 cases du jeu + une valeur qui symbolise le fait pour un pion de ne pas être affecté à une case (début de la partie ou mise en hors-jeu)
Maintenant lorsque je manipule les cases durant la partie, et lorsque je les initialises avec une valeur (qui réprésente une couche de glace sur 3 niveaux) il me faut un moyen commode i.e. une indexation par un paramêtre qui puise ses valeurs dans un ensemble discret et fini dont le cardinal peut-être vérifié à la compilation.
Mais j'ai finalement trouvé une méthode dans la class Class : getFields qui me retourne dans un tableau l'ensemble des attributs publics d'une classe donnée. Ensuite la classe Fields fournit la méthode get, qui va instancier chaque attributs (les champs de mon énumération).
Bref, je voulais avoir le maximum de contrôle pré-compilatoire.
Avec un langage comme Ada, le contrôle des types est tellement strict que lorsque le compilateur ne signale plus d'erreurs, alors la sémantique est très souvent correcte.
Merci des nombreuses réponses
OK.
La classe NumeroCase représente les cases
d'un jeu de plateau.
La classe elle-même, ne me pose pas de problème,
enfin je l'ai résolu par un copier/coller sur le web.
Le problème est qu'elle représente un type énuméré
avec 38 valeurs : les 37 cases du jeu + une valeur qui symbolise
le fait pour un pion de ne pas être affecté à une case (début de la partie
ou
mise en hors-jeu)
Maintenant lorsque je manipule les cases durant la partie,
et lorsque je les initialises avec une valeur (qui réprésente une couche de
glace sur
3 niveaux) il me faut un moyen commode i.e. une indexation par un paramêtre
qui puise
ses valeurs dans un ensemble discret et fini dont le cardinal peut-être
vérifié à la compilation.
Mais j'ai finalement trouvé une méthode dans la class Class : getFields
qui me retourne dans un tableau l'ensemble des attributs publics d'une
classe donnée.
Ensuite la classe Fields fournit la méthode get, qui va instancier chaque
attributs (les champs de mon énumération).
Bref, je voulais avoir le maximum de contrôle pré-compilatoire.
Avec un langage comme Ada, le contrôle des types est tellement strict que
lorsque
le compilateur ne signale plus d'erreurs, alors la sémantique est très
souvent correcte.
La classe NumeroCase représente les cases d'un jeu de plateau.
La classe elle-même, ne me pose pas de problème, enfin je l'ai résolu par un copier/coller sur le web.
Le problème est qu'elle représente un type énuméré avec 38 valeurs : les 37 cases du jeu + une valeur qui symbolise le fait pour un pion de ne pas être affecté à une case (début de la partie ou mise en hors-jeu)
Maintenant lorsque je manipule les cases durant la partie, et lorsque je les initialises avec une valeur (qui réprésente une couche de glace sur 3 niveaux) il me faut un moyen commode i.e. une indexation par un paramêtre qui puise ses valeurs dans un ensemble discret et fini dont le cardinal peut-être vérifié à la compilation.
Mais j'ai finalement trouvé une méthode dans la class Class : getFields qui me retourne dans un tableau l'ensemble des attributs publics d'une classe donnée. Ensuite la classe Fields fournit la méthode get, qui va instancier chaque attributs (les champs de mon énumération).
Bref, je voulais avoir le maximum de contrôle pré-compilatoire.
Avec un langage comme Ada, le contrôle des types est tellement strict que lorsque le compilateur ne signale plus d'erreurs, alors la sémantique est très souvent correcte.