首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何设置枚举类的数据类型?

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

Stack Overflow用户
提问于 2015-02-18 06:59:19
回答 2查看 527关注 0票数 1

我正在java中创建一个枚举类,这个类已经在.NET中创建了。

这是.NET代码。

代码语言:javascript
复制
public enum Bezel : byte
        {
            Flashing,
            SolidOn,
            None = 254
        }

这是我正在尝试的Java代码。

代码语言:javascript
复制
public enum Bezel {

        Flashing,
        SolidOn,
        None = 254
    }

在.NET代码中,它们正在扩展“字节”。那么,我们如何在Java中做到这一点呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-18 07:04:38

Java和.NET中的Enum是非常不同的。在.NET中,它们基本上只是命名为数字。在Java中,它们是一组固定的对象--您可以提供额外的行为等等。

而且,C#代码并不是在“扩展”byte --它只是使用byte作为底层类型。最接近的等价Java代码应该是:

代码语言:javascript
复制
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#中这样做。不过,我们不知道你会怎么用这个枚举。

票数 1
EN

Stack Overflow用户

发布于 2015-02-18 07:03:42

java中的Enum是一组对象,而不是C#中的常量集合。因此,您需要像这样用java编写枚举:

代码语言:javascript
复制
public enum Bezel 
(
    Flashing(0),
    SolidOn(1),
    None(254);

    public final int value;
    public Bezel( int value )
    {
        this.value = value;
    }
)

然后,当您需要实际值时,执行以下操作:

代码语言:javascript
复制
Bezel b = ...;
int value = b.value;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28577805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档