L'altro giorno ho cercato di fare questo, ma non funziona:Java enum impostare ordinali personalizzati
enum MyEnum {ONE = 1, TWO = 2}
con mia grande sorpresa, non si compila !!! Come osservare gli ordinali personalizzati ???
L'altro giorno ho cercato di fare questo, ma non funziona:Java enum impostare ordinali personalizzati
enum MyEnum {ONE = 1, TWO = 2}
con mia grande sorpresa, non si compila !!! Come osservare gli ordinali personalizzati ???
Non è possibile. Gli ordinali vengono riparati iniziando da 0 e lavorando. Dalla documentazione per ordinal()
:
restituisce il numero ordinale di questa costante censimento (la sua posizione nella sua dichiarazione enum, dove la costante iniziale viene assegnato un numero ordinale di zero).
Non è possibile assegnare valori personalizzati. D'altra parte, è possibile avere i propri valori nel enum:
public enum Foo {
ONE(1), TWO(2);
private final int number;
private Foo(int number) {
this.number = number;
}
public int getNumber() {
return number;
}
}
Questo è come si potrebbe farlo manualmente:
enum MyEnum {
ONE(1),
TWO(2);
private int val;
private MyEnum(int val) {
this.val = val;
}
}
L'ordine in cui si definiscono le enumerazioni determinerà gli ordinali .
enum MyEnum {
Enum1, Enum2;
}
Qui, Enum1 avrà ordinale 1 e Enum2 avrà ordinali 2.
tuttavia è possibile proprietà personalizzate per ogni enum:
enum MyEnum {
Enum1(1), Enum2(2);
private int ord ;
MyEnum(int ord) {
this.ord = ord;
}
public int getOrd() {
return this.ord;
}
}
è possibile ignorare ordinali()? – gotch4
No ... è un metodo finale, quindi non può essere ignorato –
Penso che l'Enum1 avrà ordinale 0 e non 1. E Enum2 avrà ordinale 1 e non 2. – RaphMclee