【发布时间】:2016-12-25 09:45:05
【问题描述】:
我的枚举有问题。我需要根据枚举值调用不同的函数,我可以根据 switch case 来做,但在我的情况下它不是一个解决方案,因为我有大约 50 个值。所以我想要做的是传递枚举构造函数中的每个函数与动态运行时值。下面是一些示例代码 sn-p 使其更清晰。
public enum TestEnum {
TEST_ENUM1("1", TestUtil.one(name)),
TEST_ENUM2("2", TestUtil.two(name));
private String display;
private Runnable function;
private static String name;
TestEnum(String number,Runnable function){
this.display = number;
this.function = function;
}
public String getDisplay() {
return display;
}
public Runnable getFunction() {
return function;
}
}
要执行此操作,我需要遍历细枚举并使用名称字段的动态值调用每个方法。
for (TestEnum enumv : TestEnum.values()) {
enumv.getFunstion.execute();
}
如果是的话,是否有可能达到同样的效果,那么请告诉我最好的方法。谢谢
【问题讨论】:
-
我不明白你的问题是什么。你的代码应该做什么,而它又做了什么?
-
如果你想要运行时值,不要传递 runnable,创建你自己的接口,在执行方法中接受一个参数
-
你可以在这种情况下进行多态性。看看here。维护和满足您的需求会更容易
-
看看 Bloch,“Effective Java”第 30 条的想法。
-
name在这段代码中应该代表什么:TEST_ENUM1("1", TestUtil.one(name))?你的Runnable真的是Function吗?