深入探讨 Java 中的函数式编程
函数式编程(FP)是一种强调纯函数、不可变性和声明式代码的编程范式。与传统的命令式编程不同,FP 避免副作用和状态变化,使代码更易于推理、测试和并行化。Java 虽然以面向对象编程(OOP)为核心,但自 Java 8 以来通过 lambda 表达式、Stream API 和函数接口引入了函数式编程特性。本文将基于提供的资料,结合 Java 24 的最新特性,深入探讨 Java 中的函数式编程概念,包括纯函数、不可变性、高阶函数、递归、闭包、惰性求值和柯里化,同时分析 Java 作为函数式编程语言的局限性。
import java.util.function.Function;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Stream;public class FunctionalProgrammingExample {// 纯函数示例public static int add(int a, int b) {return a + b; // 不修改外部状态,仅依赖输入}// 高阶函数示例public static Function<String, String> makePrefixer(String prefix) {return s -> prefix + ": " + s;}// 闭包示例public static Function<Integer, Integer> closure() {var atomic = new AtomicInteger(0);return i -> atomic.addAndGet(i);}// 柯里化示例public static Function<Integer, Function<Integer, Integer>> curriedAdd() {return a -> b -> a + b;}// Stream Gatherers 示例(需要 Java 24)public static void main(String[] args) {// 使用高阶函数var prefixer = makePrefixer("Hello");System.out.println(prefixer.apply("World")); // 输出: Hello: World// 使用闭包