我真的很喜欢在编码时轻松阅读枚举。最近我遇到了一个任务,我需要接受一个关键字列表,每个关键字都会执行一个操作。
关键字示例:早餐、午餐、晚餐
所以我希望能够写出这样的东西:
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;
}
}
}