2011-04-05 80 views
2

我試圖找出如何在Java中使用枚舉了,我不明白如何做到這一點:如何檢查Java枚舉中的值?

public enum animalSounds { 
    CAT("meow"), 
    DOG("Woof"), 
    PIG("Oink"), 

    public final String animalName; 

    animalSounds(String noise) { 
     this.animalName = noise 
    } 

} 

我想要做的,是在傳遞一個字符串,看如果該字符串存在於一組枚舉中。所以,我會傳入「Oink」並返回PIG,但如果傳入「Chirp」,我會得到某種錯誤,因爲「Chirp」沒有枚舉值。

+0

它看起來像每個答案的驅動器倒票,但我不明白爲什麼。 – trashgod 2011-04-05 17:00:33

回答

0

枚舉不適合你正在嘗試做的最好的事情,但你可以嘗試

private animalSounds getAnimal(String noise) { 
    for(animalSounds a : animalSounds.values()) 
    { 
     if(a.animalName.equals(noise)) 
     { 
      return a; 
     } 
    } 
    throw new IllegalArgumentException(); 
} 
+0

+1「第60項:贊成使用標準例外」 - [Bloch](http://java.sun.com/docs/books/effective/)。 – trashgod 2011-04-05 16:58:18

0

使用值()方法 - 與遍歷不同類型的,做你的邏輯。

0

對於少數幾個,遍歷values();對於很多人來說,創建一個Map<String, AnimalSounds>,建議here