【发布时间】:2021-12-05 03:41:44
【问题描述】:
现在我的一个 java 程序中有一个类,它定义了一系列做不同事情的非静态消费者:
public class Foo {
//pretend these methods have bodies
public void addWood(String s) ...
public void addMetal(String s) ...
public void addFish(String s) ...
public void addFood(String s) ...
public void process() {}
}
以及调用这些函数的“进程”方法。
但是我希望将调用这些函数的确切函数和顺序存储在类的某个静态状态中,所以我最初的想法很简单:
我只是创建一个 HashMap
Foo.hash_map.put( parameter, Foo::addWood );
但是我不能这样做,因为 addWood 不是静态的,所以我该怎么做p>
现在我知道这可能有抽象问题的味道,但我正在使用外部代码库,所以就让程序做我想做的事情而言,这是我能做的最好的事情。我看不出像这样的事情不起作用的任何根本原因,我承认这是一件有点奇怪的事情,但如果有人知道一种简单的方法,那将非常有帮助。
【问题讨论】:
-
类的一些静态状态 不要使用静态状态。如果这是常量,则添加一个模板方法,依次调用它们。
HashMap无论如何都没有序列。如果您有Map<String, Consumer<Foo>>,即使您展示的内容也可以正常工作。 -
你有什么理由不能手动编写一个 lambda 表达式来做你想做的事?
-
Foo::addWood不是Method而是Consumer<String>。那是你要找的吗?不清楚。