2011-09-26 12 views

Respuesta

35

No puede. Los ordinales se arreglan comenzando en 0 y funcionando. A partir de los documentos de ordinal():

Devuelve el ordinal de esta constante de enumeración (su posición en su declaración de enumeración, donde la constante inicial se le asigna un ordinal de cero).

No puede asignar sus propios valores. Por otro lado, puede tener sus propios valores de la enumeración:

public enum Foo { 
    ONE(1), TWO(2); 

    private final int number; 

    private Foo(int number) { 
     this.number = number; 
    } 

    public int getNumber() { 
     return number; 
    } 
} 
4

Ésta es la forma en que podría hacerlo de forma manual:

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

    private int val; 

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

El orden en el que se definen las enumeraciones determinará los ordinales .

enum MyEnum { 
    Enum1, Enum2; 
} 

Aquí, Enum1 tendrá ordinales 1 y Enum2 tendrá ordinales 2.

Pero se puede tener propiedades personalizadas para cada enumeración:

enum MyEnum { 
    Enum1(1), Enum2(2); 

    private int ord ; 

    MyEnum(int ord) { 
     this.ord = ord; 
    } 

    public int getOrd() { 
     return this.ord; 
    } 
} 
+1

¿Es posible anular ordinal()? – gotch4

+3

No ... es un método final, por lo que no puede anularse –

+2

Creo que Enum1 tendrá el ordinal 0 y no 1. Y Enum2 tendrá el ordinal 1 y no el 2. – RaphMclee