2013-07-13 72 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字節類型

有沒有更好的或更短的方法?

+0

爲什麼不;噸你投它'(字節)1'? – NINCOMPOOP

+0

爲什麼你希望它是一個'byte',對象不會變小,值也不會有任何改變。 –

+0

@PeterLawrey如何?字節應該分配較少的內存。是不是? – varuog

回答

8

只是castbyte,像這樣:

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