我在java中创建了一个enum类,它已经在.NET中创建。
这是.NET代码。
public enum Bezel : byte
{
Flashing,
SolidOn,
None = 254
}
这是我正在尝试的Java代码。
public enum Bezel {
Flashing,
SolidOn,
None = 254
}
在.NET代码中,它们正在扩展“byte”。那么,我们如何在Java中做同样的事情呢?
答案 0 :(得分:2)
java中的枚举是对象集,而不是C#中的常量集。 所以,你需要在java中编写你的枚举:
public enum Bezel
(
Flashing(0),
SolidOn(1),
None(254);
public final int value;
public Bezel( int value )
{
this.value = value;
}
)
然后,当您需要实际值时,请执行以下操作:
Bezel b = ...;
int value = b.value;
答案 1 :(得分:1)
Java和.NET中的枚举非常不同。在.NET中,他们基本上只是命名数字。在Java中,它们是一组固定的对象 - 你可以提供额外的行为等。
此外,C#代码不是"#34;扩展" byte
- 它只是使用byte
作为基础类型。最接近的等效Java代码类似于:
public enum Bezel {
// Note different naming convention in Java
FLASHING((byte) 0),
SOLID_ON((byte) 1),
NONE((byte) 254);
private final byte value;
private Bezel(byte value) {
this.value = value;
}
public byte getValue() {
return value;
}
}
请注意,如果您打印Bezel.NONE.getValue()
,它将打印-2,因为Java的byte
类型已签名,而在C#中未签名。 Java中没有无符号字节类型 - 但您总是可以使用short
或int
来覆盖0-255范围(当然还有更多)。
你可能还想要一个方法来检索Bezel
给定它的值 - 你可以通过强制转换来在C#中做。我们不知道你将如何使用枚举。