Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 基本整数枚举_Java - Fatal编程技术网

Java 基本整数枚举

Java 基本整数枚举,java,Java,我创建了一个非常基本的枚举 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.

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

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转换为整数

我知道我可以做
StatusCode.OK.getValue()
,但看起来很奇怪。默认情况下,
StatusCode.OK
如何为整数

默认情况下,StatusCode.OK如何为整数

不可能。它不是一个
整数
,而是一个
状态码

这样更好。任何人都可以创建一个
整数
,其值在该范围内。但是你不能创建一个新的
StatusCode
,因此你知道你得到的肯定是[这一小部分值]之一。

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

(事实上,他们是伪装的阶级--)

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


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

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