如何设置枚举class的数据类型?
How to set data type of enum class?
我正在 java 中创建枚举 class,它已在 .NET 中创建。
这是 .NET 代码。
public enum Bezel : byte
{
Flashing,
SolidOn,
None = 254
}
这是我正在尝试的 Java 代码。
public enum Bezel {
Flashing,
SolidOn,
None = 254
}
在 .NET 代码中,它们正在扩展 "byte"。那么,我们怎样才能在 Java 中做同样的事情呢?
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;
Java 和 .NET 中的枚举非常不同。在 .NET 中,它们基本上只是命名数字。在 Java 中,它们是一组固定的对象 - 您可以为其提供额外的行为等。
此外,C# 代码不是 "extending" 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# 中通过强制转换来完成的事情。不过,我们不知道您将如何使用枚举。
我正在 java 中创建枚举 class,它已在 .NET 中创建。
这是 .NET 代码。
public enum Bezel : byte
{
Flashing,
SolidOn,
None = 254
}
这是我正在尝试的 Java 代码。
public enum Bezel {
Flashing,
SolidOn,
None = 254
}
在 .NET 代码中,它们正在扩展 "byte"。那么,我们怎样才能在 Java 中做同样的事情呢?
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;
Java 和 .NET 中的枚举非常不同。在 .NET 中,它们基本上只是命名数字。在 Java 中,它们是一组固定的对象 - 您可以为其提供额外的行为等。
此外,C# 代码不是 "extending" 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# 中通过强制转换来完成的事情。不过,我们不知道您将如何使用枚举。