我不是Java开发人员。但我现在正在研究Android应用程序开发,所以我做了一些怀旧,在没有触及它三年之后再做一些java。
我期待使用“google-api-translate-java”库 其中有一个Language类。这是一个enum,允许提供语言名称并为Google Translate提供它的价值。
我可以轻松获得所有值:
for (Language l : values()) {
// Here I loop on one value
}
但我想得到的是所有键名称的列表(法语,英语,......)。
是否有类似“keys()”方法的东西允许我遍历所有枚举键?
答案 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)
试试这个:
for (Language l : Language.values()) {
l.name();
}
另见:
答案 2 :(得分:1)
是 - 如果枚举为X,请使用X.values()。见this tutorial。