2010-04-26 78 views
3

我不是java开发人员。但我现在正在研究Android应用程序开发,所以我正在做一些怀旧的事情,在三年后再次尝试一些Java。Enum:获取密钥列表

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

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

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

但我会希望得到的是所有的按键名称(法语,英语,...)的列表。
有没有像“keys()”方法让我循环所有枚举的键?

回答

10

到替代是使用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 
} 
+0

.name()正是我所期待的。谢谢。 – 2010-04-26 08:23:33

1

是 - 如果枚举是X,则使用X.values()。请参阅this tutorial

+0

我试过了。但是库重新定义了toString()方法。所以我得到的仍然是价值而不是关键。 – 2010-04-26 08:05:27

+0

@Damien:查看我编辑的答案。基本上你的名字是() – 2010-04-26 08:12:40