java - 在枚举内部搜索

标签 java enums

我有一个枚举,其中包含映射到名称和整数的字符串集合。我想根据枚举内的字符串返回整数。

我还将枚举用于其他一些目的,因此我想保留它(否则我将仅使用 HashMap 来实现此目的)。这可能吗?

这是一个演示我想要实现的目标的示例

public enum Types {

 A("a.micro", 1), B("b.small", 2), C("c.medium", 4);

private String type;
  private int size;

  private Type(String type, int size) {
    this.type = type;
    this.size = size;
  }

  public String getType() {
    return type;
  }

  public int getSize() {
    return size;
  }
}

我想根据类型返回大小:

Type.valueOf("a.micro").getSize();

最佳答案

只需在 Types 类下创建一个全局 HashMap ,该类存储类型字符串及其相应枚举实例之间的关系。

private static final Map<String, Types> typeMap = new HashMap<String, Types>();
static {
    for (Types types : values()) {
        typeMap.put(types.type, types);
    }
}

public static Types searchByType(String type) {
    return typeMap.get(type);
}

关于java - 在枚举内部搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31921115/

相关文章:

java - 我应该如何使用 Spring Boot 连接到 ArangoDB

java - 在 LinkedList 和 ArrayList 之间没有明显优势的情况下,应该使用哪个?

java - 如何访问Java中枚举中的内部类

c - 哪些项目(结构)知道它们在数组中的位置的静态数组

java - 如何打印定位器路径

java - 动态替换 fragment 时出现 RuntimeException

java - 为什么 Java 允许枚举常量的代码块?

java - 使用 Enums 或 Refection 的常量特定方法?需要根据字符串调用方法

enums - 我如何只匹配枚举的部分而不是所有变体?

java - 正则表达式:删除第二个 "-"之前和之后的所有内容