能否将Java方法存入List等集合?类似Python的函数存储调用实现
Java实现函数存入列表并迭代调用的方案
Java完全可以实现类似Python的这种操作,从Java 8开始引入的函数式编程特性让这一需求变得容易实现,核心是用函数式接口来抽象函数逻辑,再将这些接口实例存入列表,最后迭代调用即可。
示例代码
import java.util.ArrayList; import java.util.List; import java.util.function.Function; public class FunctionListDemo { public static void main(String[] args) { // 用Lambda表达式定义多个函数逻辑 Function<Integer, Integer> addOne = num -> num + 1; Function<Integer, Integer> multiplyByTwo = num -> num * 2; Function<Integer, Integer> square = num -> num * num; // 将函数实例存入列表 List<Function<Integer, Integer>> funcList = new ArrayList<>(); funcList.add(addOne); funcList.add(multiplyByTwo); funcList.add(square); int cur = 1; // 迭代调用列表中的每个函数,更新cur的值 for (Function<Integer, Integer> func : funcList) { cur = func.apply(cur); } System.out.println("最终结果: " + cur); // 计算过程:((1+1)*2)^2 = 16 } }
关键说明
- 函数式接口的选择:示例中使用的
Function<T, R>是Java标准库提供的函数式接口,专门对应“接收一个T类型参数、返回R类型结果”的函数,完美匹配你Python示例的调用逻辑。如果需要处理其他类型的函数,可以选用对应接口:- 无参数有返回值:
Supplier<T> - 有参数无返回值:
Consumer<T> - 接收两个参数返回一个结果:
BiFunction<T, U, R>
- 无参数有返回值:
- 函数实例的创建:除了Lambda表达式,还可以用方法引用(比如
Integer::sum)、自定义实现函数式接口的类实例来填充列表,灵活性和Python的函数存入逻辑一致。
内容的提问来源于stack exchange,提问作者xiaodelaoshi
相关产品推荐
相关产品推荐

