Bonjour

Je viens du C, et j'ai la longue habitude d'écrire ce genre de choses

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
enum TOTO
{
  VALEUR1=-1,
  VALEUR2,
  VALEUR3,
  VALEUR4,
  VALEUR5=VALEUR3,
  VALEUR6,
  VALEUR7=20,
  VALEUR8
};
donnant (-1, 0, 1, 2, 1, 2, 20, 21) comme série de valeurs

J'ai essayé d'adapter ça en Java 5, j'arrive à gérer les affectations directes, mais j'ai il me reste un problème

code java :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
enum TOTO
{
  VALEUR1(-1),
  VALEUR2,
  VALEUR3,
  VALEUR4,
  VALEUR5(VALEUR3),
  VALEUR6,
  VALEUR7(20),
  VALEUR8;
 
  private int valeur;
  public valeur() { return this.valeur; }
  TOTO(final int i) { this.valeur=i; }
  TOTO(TOTO i) { this.valeur=TOTO.valeur(); }
 
  TOTO() {
    final int ord=this.ordinal();
    if (ord==0)
      this.valeur=0;
    else
      this.valeur=TOTO.values()[ord-1].value()+1; // ici est mon problème
  }
}
Le problème est que je n'ai pas accès à enum.values() dans un constructeur de l'enum, et que je suis obligé de passer par un compteur statique externe, ce qui est très moche.

Quelqu'un a une idée?