繁体   English   中英

如何设置枚举类的数据类型?

[英]How to set data type of enum class?

我在java中创建了一个枚举类,它已经在.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#代码不是“扩展” 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中没有无符号字节类型 - 但您总是可以使用shortint来覆盖0-255范围(当然还有更多)。

您可能需要一种方法来检索Bezel因为它具有价值 - 您只需通过强制转换即可在C#中执行此操作。 我们不知道你将如何使用枚举。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM