在构造函数调用中设置一个短值[重复]
Posted
技术标签:
【中文标题】在构造函数调用中设置一个短值[重复]【英文标题】:Set a short value in constructor call [duplicate] 【发布时间】:2018-07-18 13:39:31 【问题描述】:我有一个带有构造函数的enum
:
enum myEnum
A(0), B(1), C(2);
private final short value;
private myEnum(short value)
this.value = value;
public short getValue()
return this.value;
不幸的是,Eclipse 让我知道没有构造函数接受单个 int
。因此,我被降级为短片......
A((short) 0), B((short) 1), C((short) 2);
...无论是对每个值都执行此操作,还是在构造函数中采用 int
并在赋值时进行强制转换。
有没有比花时间投射更好的方法来做到这一点,还是没有更好的解决方案?
【问题讨论】:
java 整数字面量(1
、-234
等)始终为 int
s,因此无法进行强制转换
短值没有文字。你必须投射。
为什么不创建第二个构造函数来获取整数而不是短裤? private myEnum(int value) this.value = (short) value;
你为什么要穿短裤?
@Lino 这就是我害怕的答案,结果证明是我刚刚接受的副本。谢谢。 (我使用的是short
,因为项目中有其他预先存在的方法。)
【参考方案1】:
你可以使用
short shortValue = Integer.valueOf(0).shortValue();
在引擎盖下它仍然是一样的。所以还是睁一只眼闭一只眼吧。
【讨论】:
【参考方案2】:你总是要强制转换,因为很遗憾,短裤没有文字格式,我建议在你的枚举中添加另一个构造函数:
private myEnum(int value)
this((short) value);
这样你就可以避免将它转换为枚举的值。
【讨论】:
这很糟糕。由于short
远小于int
,因此可能导致溢出。
@MuratK。你是对的,但在这种情况下,我认为不会发生溢出,因为枚举值是“可数的”
我的问题表明这是一个比投射每个单独值更糟糕的选项。这些值将是可数的。以上是关于在构造函数调用中设置一个短值[重复]的主要内容,如果未能解决你的问题,请参考以下文章