Oui, c'est certainement mieux que d'utiliser une arrayList de constante ^^
QQun a une autre idée ?
Version imprimable
En Java 1.4 moi je ferais un truc du genre :
Code:
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 public final class Week { private static final Day[] _week = {Day.MONDAY, Day.TUESDAY, Day.WEDNESDAY, Day.THURSDAY, Day.FRIDAY, Day.SATURDAY, Day.SUNDAY}; public static Day getDayOfWeek(final int index) { if (index >= 1 && index <= 7) { return _week[index - 1]; } throw new IndexOutOfBoundsException("Invalid index [1..7]"); } public static final class Day { public static final Day MONDAY = new Day(1, "Monday"); public static final Day TUESDAY = new Day(2, "Tuesday"); public static final Day WEDNESDAY = new Day(3, "Wednesday"); public static final Day THURSDAY = new Day(4, "Thursday"); public static final Day FRIDAY = new Day(5, "Friday"); public static final Day SATURDAY = new Day(6, "Saturday"); public static final Day SUNDAY = new Day(7, "Sunday"); private int _value; private String _name; private Day(final int value, final String name) { _value = value; _name = name; } /* (non-Javadoc) * @see java.lang.Object#toString() */ public String toString() { return "[Day] " + _name; } /* (non-Javadoc) * @see java.lang.String#equals(java.lang.Object) */ public boolean equals(Object anObject) { Day d = (Day)anObject; return _value == d._value; } } public static void main(String[] agrs) { System.out.println(Week.getDayOfWeek(2)); } }
ca me semble tout a fait adapté ^^
mais en java 1.5 ou plus ?
En Java 1.5 la classe Day devient une vrai enum comme dans les autres exemples cités avant.
y a quelque chose qui m' échappe. Comment concevez-vous une énumération de nombres entiers ?
Est-ce ainsi ?
Je crois que non. A la compilation, une erreur typeCode:
1
2 public enum { 1, 2, 3, 8}
Comment faire ?Citation:
identifier expected
Puisque ce sont des valeurs sans nom, je crois qu'en fait un tableau d'entiers suffit....
public static int[] desEntiers = {1, 2, 3, 8};
Ou alors, il devrait être possible de faire ceci :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 public enum MonEnum { Abc(1), Bcd(2), Cde(3), Def(8); private int value; private MonEnum(int value) { this.value = value; } public int getValue () { return this.value; } }
Oui mais ce que lui voulait dire c'est un ensemble de valeur possible fini (ce qui en français est appelé une "énumération de valeurs", mais ne correspond pas au cas enum).
Et dans ce cas là les traitements liés à l'énumération sont inutiles et donc à éviter.
Ok. Faut dire que ce pour que je connais au C... Je suis pas encore arrivé aux enum (et j'y arriverai jamais sans doute ^^)