有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java枚举问题。字符串和整数关系

我有一个基本的if-else-if代码块。这是简化版

if (var == 1) {
  finalString = "string1";
} else if (var == 3) {
  finalString = "string3";
} else if (var == 4) {
  finalString = "string4";
} else {
  finalString = "no string found";
}

我试图使用枚举方法,所以我创建了一个枚举类

public enum MyValues {
  string1(1),
  string2(3),
  string4(4);
  ...
  ...
}

有没有办法用我创建的枚举改进我的if/else语句


共 (2) 个答案

  1. # 1 楼答案

    最好使用Map来映射int < > String

    Map<Integer, String> map = Map.of(1, "string1", 2, "string2", 3, "string3");
    
    int aKey = 1;
    String finalString = map.getOrDefault(aKey, "no string found");
    
    System.out.println(map.getOrDefault( 1, "no string found"));  // string1
    System.out.println(map.getOrDefault(10, "no string found"));  // no string found
    
  2. # 2 楼答案

    如果确实必须使用枚举,可以执行以下操作:

        public enum MyValues {
            string1(1),
            string2(3),
            string4(4),
            default_value(-1);
    
            private final int key;
            MyValues(int key) {
                this.key = key;
            }
    
            public MyValues getByKey(int key){
                return Arrays.stream(values())
                        .filter(e -> e.key == key)
                        .findAny()
                        .orElse(default_value);
            }
        }
    

    如果不必使用枚举,请参见azro's answer