基本整数枚举

19 浏览
0 Comments

基本整数枚举

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

public enum StatusCode {
    OK(0, "一切正常"),
    ERROR(4, "致命错误");
    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; }
}

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

public Integer func() { 
   return StatusCode.OK; // 在方法内部
}

\n错误信息:\n

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

\n我知道可以使用`StatusCode.OK.getValue()`,但这看起来很奇怪。`StatusCode.OK`怎么可能默认是一个整数呢?

0
0 Comments

(Basic Integer Enum)问题的出现原因是对于StatusCode.OK默认为整数的疑问。然而,StatusCode.OK不是一个整数,而是一个StatusCode类型。这样做的好处是任何人都可以创建一个整数,并可以设置任何范围内的值。但是,你无法创建一个新的StatusCode,因此你知道你获得的东西肯定是[这些少量值]之一。

解决这个问题的方法是使用枚举类型来代替整数类型。枚举类型可以限定变量的可能取值范围,从而避免了任意取值的问题。在这个例子中,可以创建一个StatusCode枚举类型,并为每个可能的状态码定义一个枚举常量。这样,StatusCode.OK就可以作为一个枚举常量来表示,而不是一个任意的整数值。

以下是使用枚举类型解决该问题的示例代码:

public enum StatusCode {
  OK,
  ERROR,
  NOT_FOUND
}

在这个示例代码中,StatusCode枚举类型定义了三个枚举常量:OK、ERROR和NOT_FOUND。现在,StatusCode.OK可以作为一个特定的枚举常量来表示,而不是一个任意的整数值。

通过使用枚举类型,我们可以确保StatusCode只能取枚举常量中定义的值,而不是任意的整数值。这样可以提高代码的可读性和可维护性,并减少由于使用任意整数值而引起的潜在错误。

0
0 Comments

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

(实际上它们就是类的伪装 -- https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html

在C#中,enum { Foo, Bar }会有隐式的值,Foo = 0Bar = 1,但在Java中并不是这样。

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

问题原因:

Java中的枚举不是以整数的形式存在,而是以类的形式存在。因此,无法直接通过枚举名获取其对应的整数值。

解决方法:

在Java中,可以为枚举类型添加一个方法来获取其对应的整数值。在给定的示例中,可以通过调用StatusCode.OK.getValue()来获取枚举常量OK对应的整数值。这样可以避免直接访问枚举常量的整数值,增加了代码的可读性和可维护性。

代码示例:

public enum StatusCode {
    OK(200),
    NOT_FOUND(404),
    INTERNAL_SERVER_ERROR(500);
    private final int value;
    StatusCode(int value) {
        this.value = value;
    }
    public int getValue() {
        return value;
    }
}
public class Main {
    public static void main(String[] args) {
        int okValue = StatusCode.OK.getValue();
        System.out.println(okValue); // 输出:200
    }
}

以上是解决该问题的方法,通过为枚举类型添加一个方法来获取其对应的整数值,可以更加灵活地使用枚举常量,并且提高了代码的可读性和可维护性。

0