我正在java中创建一个枚举类,这个类已经在.NET中创建了。
这是.NET代码。
public enum Bezel : byte
{
Flashing,
SolidOn,
None = 254
}这是我正在尝试的Java代码。
public enum Bezel {
Flashing,
SolidOn,
None = 254
}在.NET代码中,它们正在扩展“字节”。那么,我们如何在Java中做到这一点呢?
发布于 2015-02-18 07:04:38
Java和.NET中的Enum是非常不同的。在.NET中,它们基本上只是命名为数字。在Java中,它们是一组固定的对象--您可以提供额外的行为等等。
而且,C#代码并不是在“扩展”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#中这样做。不过,我们不知道你会怎么用这个枚举。
发布于 2015-02-18 07:03:42
java中的Enum是一组对象,而不是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;https://stackoverflow.com/questions/28577805
复制相似问题