枚举构造函数中的Java字节类型

枚举构造函数中的Java字节类型,java,enums,Java,Enums,如何将int替换为point中的字节。我能想到的一种方法是使用TEN(“十”,Byte.parseByte(“1”) 有更好或更短的方法吗?一个更短的方法是铸造 public enum Rank { TEN("Ten",1), NINE("Nine",2), EIGHT("Eight",0), SEVEN("Seven",0); private final String name; private final int point; /

如何将int替换为point中的字节。我能想到的一种方法是使用
TEN(“十”,Byte.parseByte(“1”)


有更好或更短的方法吗?

一个更短的方法是铸造

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

只需将
转换为
字节
,如下所示:

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

只是一个样式建议,在构造函数中移动强制转换,使其看起来更干净:

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

为什么不;为什么不将其转换为
(byte)1
?为什么要将其转换为
byte
,对象不会更小,值也不会有任何不同。@PeterLawrey如何?字节应分配较少的内存。不是吗?@fallenAngel并不是说节省3个字节很重要,但对象是在8个字节的边界上分配的。无论使用byte、char、short、int还是float,对象的大小都是相同的,因为即使在64位JVM上,引用也很可能是32位的。注意:如果引用实际上是64位的,那么它可能是一个a
长的
,并且大小将保持不变。@fallenAngel 3字节的成本约为百万分之一美分。按一个最低工资键所需的时间是这个数字的1000倍以上。i、 通过使用
int
少打一个字母,你将节省更多的时间。
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;
    }