java - 枚举 : get the keys list

标签 java enums

我期待着使用“google-api-translate-java”库。
其中有一个Language类(class)。这是一个枚举,允许提供语言名称并获取它对 Google 翻译的值(value)。

我可以很容易地得到所有的值:

for (Language l : values()) {
    // Here I loop on one value
}

但我想要得到的是所有键名的列表(法语、英语、...)。
是否有类似“keys()”的方法允许我循环遍历所有枚举的键?

最佳答案

Language.values() 的替代方法是使用 EnumSet :

for (Language l : EnumSet.allOf(Language.class))
{
}

如果您想在使用集合接口(interface)而不是数组的 API 中使用它,这将很有用。 (它也避免了创建数组开始......但当然需要执行其他工作。这都是权衡取舍。)

在这种特殊情况下,values() 可能更合适 - 但至少值得了解 EnumSet

编辑:从另一条评论来看,您担心 toString() 被覆盖 - 请改为调用 name():

for (Language l : Language.values())
{
    String name = l.name();
    // Do stuff here
}

关于java - 枚举 : get the keys list,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2711862/

相关文章:

java - 无法使用 JMS 初始化上下文

java - Tapestry - 枚举强制

c++ - 应用关于如何递增枚举的规则

java - 如何从枚举中提取元素而不重复

java - 将 C 库翻译成 Java : Getting mangled garbage data in top-left of resulting bitmap

c# - 使用 Reflections 访问 Enum 并使用 "Enum.TryParse"比较值

java - 如何从 Enum 中的 Spring Messagesource 读取内容?

java - 使用 Java 8 Stream API 查找枚举值

java - ASM 中的哪些指令仅用于调试?

java - 如何使用 Guice 注入(inject) SLF4J 绑定(bind)?