枚举:获取密钥列表

时间:2010-04-26 07:59:24

标签: java enums

我不是Java开发人员。但我现在正在研究Android应用程序开发,所以我做了一些怀旧,在没有触及它三年之后再做一些java。

我期待使用“google-api-translate-java”库 其中有一个Language类。这是一个enum,允许提供语言名称并为Google Translate提供它的价值。

我可以轻松获得所有值:

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

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

3 个答案:

答案 0 :(得分:10)

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

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

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

在这种特殊情况下,values()可能更合适 - 但至少知道EnumSet是值得的。

编辑:根据其他评论判断,您担心被toString()被覆盖 - 请致电name()

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

答案 1 :(得分:4)

答案 2 :(得分:1)

是 - 如果枚举为X,请使用X.values()。见this tutorial