函数式接口是只含一个抽象方法的接口,用于支持Lambda表达式,可通过@FunctionalInterface注解标识,常见内置接口包括Supplier、Consumer、Function、Predicate等,结合Lambda可简化集合操作与函数式编程。

函数式接口是Java 8引入的一个核心概念,主要用于支持Lambda表达式。它指的是**只包含一个抽象方法**的接口,可以有多个默认方法或静态方法。这种接口可以用@FunctionalInterface注解来标识,编译器会检查是否符合函数式接口的定义。
要定义一个函数式接口,只需确保接口中只有一个抽象方法。使用@FunctionalInterface注解可以让代码更清晰,并在违反规则时提示错误。
示例:
@FunctionalInterface
public interface MyFunction {
int apply(int a, int b);
}
这个接口只有一个抽象方法apply,因此是函数式接口。如果再添加一个抽象方法,编译就会报错。
Java 8在java.util.function包中提供了许多常用的函数式接口,适用于大多数场景:
立即学习“Java免费学习笔记(深入)”;
函数式接口结合Lambda表达式,能显著简化代码,特别是在集合操作中。
示例1:使用Consumer遍历集合
List<String> list = Arrays.asList("a", "b", "c");
list.forEach(s -> System.out.println(s));
forEach方法接收一个Consumer,Lambda表达式替代了匿名内部类。
示例2:使用Predicate过滤数据
Predicate<Integer> isEven = x -> x % 2 == 0;
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> evenNumbers = numbers.stream()
.filter(isEven)
.collect(Collectors.toList());
通过Predicate定义筛选条件,使逻辑清晰且可复用。
示例3:自定义函数式接口当内置接口无法满足需求时,可以自定义:
@FunctionalInterface
public interface Calculator {
double calculate(double a, double b);
}
使用方式:
Calculator add = (a, b) -> a + b;
System.out.println(add.calculate(2.0, 3.0)); // 输出5.0
函数式接口是Java实现函数式编程的基础。它让Lambda表达式有了目标类型,使代码更简洁、易读。合理使用内置接口可以避免重复造轮子,而自定义接口则能灵活应对特定业务场景。掌握函数式接口有助于更好地利用Stream API和并发编程中的新特性。
基本上就这些,理解清楚后用起来并不复杂,但容易忽略的是保持接口的“单一抽象方法”原则。只要守住了这一点,函数式接口就能发挥最大作用。
以上就是Java中函数式接口的定义和应用的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号