我真的很喜歡編碼時讀取枚舉的方便。 最近我遇到了一個任務,我需要接受一個關鍵字列表,每個都會執行一個操作。Enum需要設計指導
例關鍵字:早餐,午餐,晚餐
所以我想能寫這樣的事: String whatImGoingToMake = Keywords.BREAKFAST("banana").getPopularRecipe();
這裏的想法是用香蕉作爲原料,以獲得受歡迎的早餐食譜。 我想到了這個,因爲我想到了使用反射它應該能夠工作。
問題是我無法調用getPopularRecipe(),因爲它不是靜態的,不允許用於內部類。
我是否正確,強迫枚舉類似這樣做並使用類來代替它?接下來的編碼器最簡單的實現是什麼,然後選擇它來理解?
也許是因爲它在這裏遲到了,但我在這一點上掙扎着。
我試圖遠離長長的IF語句或switch語句,如果可能的話。我只是不喜歡看到他們,不惜一切代價避免他們。所以,我不想寫類似:
if (param.equals("BREAKFAST") {
//lookup in breakfast db
} else if (param.equals("LUNCH") {
//you get the idea - I dont like this since it can go on forever if we start adding BRUNCH, SUPPER, SNACK
}
這裏是枚舉,即時通訊感興趣的是得到工作:
public enum MyUtil {
BREAKFAST {
public String getPopularRecipe(String ingredient) {
//do something with ingredient
return recipe;
}
},
LUNCH {
public String getPopularRecipe(String ingredient) {
//do something with ingredient
return recipe;
}
}
}
有時它們(if語句)是正確的選擇,使用它們。 (KISS!) – Swapnil
那麼你最後一個例子有什麼問題?它完全允許你想要做的事情。 – tcb
也許是由於我的C#背景,這看起來不像'enum'。 ('關鍵字.BREAKFAST(「香蕉」)'我怎麼看它是一個函數調用) –