2013-07-13 3 views
3
public enum Rank { 
    TEN("Ten",1), 
    NINE("Nine",2), 
    EIGHT("Eight",0), 
    SEVEN("Seven",0); 


    private final String name; 
    private final int point; 

    /* 
    * @param rank should be byte 
    */ 
    private Rank(String name,int point) 
    { 
     this.name=name; 
     this.point=point; 
    } 

Как заменить int на байт в точке. Один из способов, которыми я могу думать, - использовать TEN("Ten",Byte.parseByte("1"));Java byte type in enum constructor

Есть ли какой-нибудь лучший или более короткий подход?

+0

Почему не; вы бросаете его '(байт) 1'? – NINCOMPOOP

+0

Почему вы хотите, чтобы это было 'byte', объект не будет меньше, и значение не будет отличаться. –

+0

@PeterLawrey как? Байт должен назначать меньшую память. не так ли? – varuog

ответ

8

Просто cast к byte, например, так:

public enum Rank { 
    TEN("Ten", (byte)1), 
    NINE("Nine", (byte)2), 
    EIGHT("Eight", (byte)0), 
    SEVEN("Seven", (byte)0); 


    private final String name; 
    private final byte point; 

    private Rank(String name, byte point) 
    { 
     this.name = name; 
     this.point = point; 
    } 
2

Ускоренный подход - это литье.

TEN("Ten", (byte) 1)); 
0

просто стиль предложение, переместить бросок в конструкторе, так это выглядит чище:

public enum Rank { 
    TEN("Ten", 1), 
    NINE("Nine", 2), 
    EIGHT("Eight", 0), 
    SEVEN("Seven", 0); 


    private final String name; 
    private final byte point; 

    private Rank(String name, int point) 
    { 
     this.name = name; 
     this.point = (byte)point; 
    }