Pour raison de clareté, j'aimerais que l'index de ma table 'arbre_TableSecond' puisse être un élément intelligible d'un 'enum', plutôt que '0', '1', ... Il s'agit donc d'une question d'intérêt très général.

Ma classe 'enum' :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
enum EnVigueurDepuis { d0805, d0907 }    // Ne peut pas être  0805, 0907
Ma table principale, incluant plusieurs fois l'un des (deux) éléments de ma table secondaire et servant à la création d'un menu arborescent ('DefaultMutableTreeNode') :
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
class Tarif_TablePrincip
{   static  private  Object[]  arbre_TablePrincip;
    String[] annéeMois = {"2008 Mai", "2008 Novembre", "2009 Août"};
 
    Tarif_TablePrincip()
    {   arbre_TablePrincip = new Object[]
        {   (new Tarif_TableSecond(annéeMois[0])).
                      get_Tarif_TableSecond(EnVigueurDepuis.d0805),
            (new Tarif_TableSecond(annéeMois[1])).
                      get_Tarif_TableSecond(EnVigueurDepuis.d0805),
            (new Tarif_TableSecond(annéeMois[2])).
                      get_Tarif_TableSecond(EnVigueurDepuis.d0907)
        };
    }
 
    static Object[] get_Tarif_TablePrincip()
    {   return arbre_TablePrincip;
    }
}
Ma table secondaire à plusieurs éléments, comprenant les nomenclatures de tarifs qui ne changent que de temps en temps :
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
class Tarif_TableSecond
{   private Object[][] arbre_TableSecond;
 
    Tarif_TableSecond(String annéeMois)
    {   // Tables secondaires à multicopier
        this.arbre_TableSecond = new Object[][]
        {  /* Chaque élément d'array : Année et mois d'entrée en vigueur d'une
            * nouvelle nomenclature de tarif.
            */
            new Object[]    // Depuis 2008 Mai
            {   // 'annéeMois' : Année et mois de publication effective d'un nouveau tarif,
                new String(annéeMois),  // tels qu'à afficher dans le menu arborescent.
                new Object[]
                {   new String( "Région1" ),
                    new Object[]
                    {   new String( "Distributeur1"),
                        new Feuille("Formule1")
                    },
                    new Object[]
                    {   new String( "Distributeur4"),
                        new Feuille("Formule1"),
                        new Feuille("Formule2")
                    }
                },
                new Object[]
                {   new String( "Région2" ),
                    new Object[]
                    {   new String( "Distributeur1"),
                        new Feuille("Formule1"),
                        new Feuille("Formule2"),
                        new Feuille("Formule3")
                    },
                    new Feuille"Distributeur2"),
                    new Object[]
                    {   new String( "Distributeur3"),
                        new Feuille("Formule1"),
                        new Feuille("Formule2")
                    },
                    new Object[]
                    {   new String( "Distributeur4"),
                        new Feuille("Formule1"),
                        new Feuille("Formule2"),
                        new Feuille("Formule3")
                    }
                }
            },
            new Object[]    // Depuis 2009 Juillet
            {   new String(annéeMois),
                new Object[]
                {   new String( "Région1" ),
                    new Feuille("Distributeur1"),
                    new Object[]
                    {   new String( "Distributeur3"),
                        new Feuille("Formule1")
                    }
                },
                new Object[]
                {   new String( "Région2" ),
                    new Feuille("Distributeur1"),
                    new Object[]
                    {   new String( "Distributeur2"),
                        new Feuille("Formule1"),
                        new Feuille("Formule2")
                    },
                    new Object[]
                    {   new String( "Distributeur3"),
                        new Feuille("Formule1"),
                        new Feuille("Formule2")
                    },
                    new Feuille("Distributeur4")
                }
            }
        };
    }
 
    public Object[] get_Tarif_TableSecond(EnVigueurDepuis depuisAnnéeMois)
    {   return arbre_TableSecond[(int) depuisAnnéeMois];
    }
}
Dans cette dernière fonction 'get_Tarif_TableSecond...', l'index de la table 'arbre_TableSecond[(int) depuisAnnéeMois]' s'attend bien sûr à voir un 'int'. Le précompilateur m'envoie donc
Inconvertible types
Found : <package>.EnVigueurDepuis
Required: int
lorsque je lui propose un 'enum'. Les 'enum' fonctionnent pourtant en arr!ère plan avec des 'int'. Que dois-je faire ? Merci d'avance.