使用C / C ++或Python编程时,我有时习惯使用根据指定键引用函数的字典。但是,我真的不知道如何在Java中使用相同的 - 或者至少是相似的 - 行为,从而允许我动态键功能(或Java方法中的方法)关联。 / p>
另外,我确实找到了有人建议的HashMap技术,但这是最好也是最优雅的方式吗?我的意思是,为我想要使用的每个方法创建一个新类似乎很多。
我真的很感激每一个输入。
答案 0 :(得分:10)
您无需为每个操作创建完整的名称类。您可以使用匿名内部类:
public interface Action<T>
{
void execute(T item);
}
private static Map<String, Action<Foo>> getActions()
{
Action<Foo> firstAction = new Action<Foo>() {
@Override public void execute(Foo item) {
// Insert implementation here
}
};
Action<Foo> secondAction = new Action<Foo>() {
@Override public void execute(Foo item) {
// Insert implementation here
}
};
Action<Foo> thirdAction = new Action<Foo>() {
@Override public void execute(Foo item) {
// Insert implementation here
}
};
Map<String, Action<Foo>> actions = new HashMap<String, Action<Foo>>();
actions.put("first", firstAction);
actions.put("second", secondAction);
actions.put("third", thirdAction);
return actions;
}
(然后将其存储在静态变量中。)
好吧,所以它不像lambda表达式那么方便,但它不是太坏。
答案 1 :(得分:1)
简短的回答是你需要将每个方法包装在一个类中 - 称为仿函数。