2010-04-26 76 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