Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Types énumérés

3 réponses
Avatar
Mickybadia
Salut,

J'ai un fichier contenant quelque chose comme ça :

<<
public enum T {
A, B, C, D;

public String toString(T t) {
switch (t) {
case A: return "A";
// etc.
}
}
}
>>

Je voudrais y ajouter une fonction publique "valeursPossibles" de type
retour LinkedList<T>, voire directement ListIterator<T>, pour accéder
aux éléments de l'énumération. Je dois donc construire une liste dans ce
fichier et la remplir avec les valeurs de T.

J'ai trouvé qu'on pouvait faire un pseudo-constructeur (initializer)
dans le type T à la manière d'une classe, mais les références à A, B,
C... sont rejetées comme étant des références à du static.

Quelle serait une façon propre de m'en sortir en Java ?

Merci pour votre aide. :)

3 réponses

Avatar
Ploc
Mickybadia wrote:
Salut,

J'ai un fichier contenant quelque chose comme ça :

<<
public enum T {
A, B, C, D;

public String toString(T t) {
switch (t) {
case A: return "A";
// etc.
}
}
}




Je voudrais y ajouter une fonction publique "valeursPossibles" de type
retour LinkedList<T>, voire directement ListIterator<T>, pour accéder
aux éléments de l'énumération. Je dois donc construire une liste dans ce
fichier et la remplir avec les valeurs de T.

J'ai trouvé qu'on pouvait faire un pseudo-constructeur (initializer)
dans le type T à la manière d'une classe, mais les références à A, B,
C... sont rejetées comme étant des références à du static.

Quelle serait une façon propre de m'en sortir en Java ?

Merci pour votre aide. :)



T.values() permet d'avoir les valeurs definies dans le enum sous forme
de tableau.
(http://java.sun.com/j2se/1.5.0/docs/guide/language/enums.html)
Apres c'est pas trop complique...



Avatar
said.rabie
Mickybadia wrote:
Salut,

J'ai un fichier contenant quelque chose comme ça :

<<
public enum T {
A, B, C, D;

public String toString(T t) {
switch (t) {
case A: return "A";
// etc.
}
}
}




Je voudrais y ajouter une fonction publique "valeursPossibles" de type
retour LinkedList<T>, voire directement ListIterator<T>, pour accéder
aux éléments de l'énumération. Je dois donc construire une liste dans ce
fichier et la remplir avec les valeurs de T.

J'ai trouvé qu'on pouvait faire un pseudo-constructeur (initializer)
dans le type T à la manière d'une classe, mais les références à A, B,
C... sont rejetées comme étant des références à du static.

Quelle serait une façon propre de m'en sortir en Java ?

Merci pour votre aide. :)


Bonjour, pourquoi une liste pour acceder directement tu dispose d'un
tableau
pour ton cas : T[] t = T.values();

bien sur si j'ai bien compris ta question



Avatar
TestMan
Salut,

J'ai un fichier contenant quelque chose comme ça :

<<
public enum T {
A, B, C, D;

public String toString(T t) {
switch (t) {
case A: return "A";
// etc.
}
}
}




Je voudrais y ajouter une fonction publique "valeursPossibles" de type
retour LinkedList<T>, voire directement ListIterator<T>, pour accéder
aux éléments de l'énumération. Je dois donc construire une liste dans ce
fichier et la remplir avec les valeurs de T.

J'ai trouvé qu'on pouvait faire un pseudo-constructeur (initializer)
dans le type T à la manière d'une classe, mais les références à A, B,
C... sont rejetées comme étant des références à du static.

Quelle serait une façon propre de m'en sortir en Java ?

Merci pour votre aide. :)



Bonjour,

Je pense que la réponse a été donnée ;-)

Mais en voyant le switch dans la méthode "toString" je ne peux résister
à poster le code suivant qui montre l'utilisation de classe anonymes
pour surcharger le comportement d'un élément d'une enumération.

public enum EnumTest {

UN ("Visible"),
DEUX ("Pas Visible"){
public String getDescription(){
return "Clairement pas visible";
}
},
TROIS ("Visible"){
public String getDescription(){
return super.getDescription() + " mais ammélioré !";
}
},
QUATRE("Visible");

private String description;
private EnumTest(String description){
this.descriptionÞscription;
}

public String getDescription(){
return description;
}
public void setDescription(String description){
this.description = description;
}
}

Bon code ...

A+
TM