【问题标题】:Basic Integer Enum [duplicate]基本整数枚举[重复]
【发布时间】:2020-05-28 14:25:55
【问题描述】:

我创建了一个非常基本的枚举

public enum StatusCode {

OK(0, "Everything ran correctly"),
ERROR(4, "Fatal Error");

private final int value;
private final String description;

StatusCode(final int value, final String description) {
    this.value = value;
    this.description = description;
}

public int getValue() { return value; }

public String getDescription() { return description; }
}

在我的方法中,我试图返回一个整数

public Integer func() { 
   return StatusCode.OK; // Inside method
 }

错误:

类型不匹配:无法从 StatusCode 转换为 Integer

我知道我可以做到StatusCode.OK.getValue(),但它看起来很奇怪。 StatusCode.OK怎么能默认为整数?

【问题讨论】:

  • "我知道我可以做 StatusCode.OK.getValue() 但它看起来很奇怪" 为什么? “StatusCode.OK怎么能默认为整数?”不能。
  • 我不认为这看起来很奇怪。

标签: java


【解决方案1】:

Java 枚举不是 C/C++/C# 枚举。它们不是伪装的整数,它们更像是伪装的类。

(事实上它们是伪装的类——https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html)

而在 C# 中 enum { Foo, Bar } 将具有隐式值 Foo = 0 和 Bar = 1,而在 Java 中则不是这样。

您的StatusCode.OK.getValue() 行在Java 中是正确的做法。

【讨论】:

    【解决方案2】:

    StatusCode.OK怎么能默认为整数?

    不可能。这不是Integer,而是StatusCode。

    这样更好。任何人都可以创建一个Integer,范围内的任何值。但是你不能创建一个新的StatusCode,所以你知道你得到的东西肯定是[这少数几个值]之一。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-02
      • 1970-01-01
      • 2017-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-31
      • 2016-03-05
      相关资源
      最近更新 更多