【问题标题】:Is it possible to save Java method in some Collections such as list? [duplicate]是否可以在列表等一些集合中保存 Java 方法? [复制]
【发布时间】:2022-08-23 23:29:37
【问题描述】:

我知道某些语言(例如 python)可以做到这一点:

maps = []
cur = 1
maps.append(function)
for func in self.maps:
    cur = func(cur)

它将一个函数添加到列表中,并且可以迭代地调用它。我想知道Java是否可以做类似的事情,如果可以,怎么做?

  • 是的,假设你有一个合适的功能接口。
  • 提示:使用List<IntUnaryOperator>
  • 在 Java 中做到这一点的正确方法是通过函数式接口,然后使用例如方法引用 List<Runnable> tasks = List.of(Foo::printHello);(或 lambdas 或匿名类或实现该接口的常规类)

标签: java


【解决方案1】:

是的。您可以将 lambda 存储在列表中。

List<Function<Double, Double>> list = new ArrayList<>();
list.add(v->v*20);
list.add(v->v*30);

System.out.println(list.get(0).apply(10.));
System.out.println(list.get(1).apply(10.));

印刷

200
300

【讨论】:

  • 这个例子最好使用DoubleUnaryOperator(避免装箱/拆箱)
  • 真的。没想到。但是由于有很多选择,就参数的数量、类型等而言,我想这仍然会成为重点。
猜你喜欢
  • 2019-04-28
  • 2012-09-06
  • 2010-11-24
  • 2019-12-11
  • 2015-05-14
  • 1970-01-01
  • 1970-01-01
  • 2022-01-04
相关资源
最近更新 更多