java - 在 Java 中获得 "functions in a dictionary"最实用的方法是什么?

标签 java function methods

当使用 C/C++ 或 Python 编程时,我有时会根据指定的键使用字典来引用函数。但是,我真的不知道如何在 Java 中拥有相同的——或者至少是相似的——行为,从而允许我动态键函数(或方法,在 Java 俚语中)关联。

此外,我确实找到了有人建议的 HashMap 技术,但这是最好和最优雅的方法吗?我的意思是,为我想使用的每个方法创建一个新类似乎很多。

我非常感谢对此的每一个意见。

最佳答案

您不需要为每个操作创建一个完整的名称类。您可以使用匿名内部类:

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 表达式方便,但也不错。

关于java - 在 Java 中获得 "functions in a dictionary"最实用的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1145175/

相关文章:

java - 如何使用java将excel表中的数据插入数据库(包括空格而不编辑它们)

python - 在类方法中编写一个小函数[Python]

python - Python 中的颜色函数

python - Spark join 抛出 'function' object has no attribute '_get_object_id' 错误。我该如何解决?

java - 从方法中获取 Hashmap

java - 处理序列化类中包含 transient 成员的线程的正确做法

java - 如何将可变参数传递给观察者?

java - jtable多单元格选择

java - java排序方法的比较在哪里?

javascript - 带有 javascript 的 Google BigQuery - 如何获取查询 exe 时间以及查询处理的数据量(大小)