2011-09-26 24 views

risposta

35

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; 
    } 
} 
4

Questo è come si potrebbe farlo manualmente:

enum MyEnum { 
    ONE(1), 
    TWO(2); 

    private int val; 

    private MyEnum(int val) { 
     this.val = val; 
    } 
} 
1

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; 
    } 
} 
+1

è possibile ignorare ordinali()? – gotch4

+3

No ... è un metodo finale, quindi non può essere ignorato –

+2

Penso che l'Enum1 avrà ordinale 0 e non 1. E Enum2 avrà ordinale 1 e non 2. – RaphMclee