Java 中接口中函数式接口怎么定义和使用
在 java 中,函数式接口是指只包含一个抽象方法的接口。定义时只需确保接口中只有一个未实现的方法,并使用 @functionalinterface 注解(可选但推荐)来强制检查。使用时,可以通过 lambda 表达式、方法引用或匿名内部类直接实例化该接口,从而简化代码并提升可读性。

如何定义一个简单的函数式接口
定义函数式接口的核心是仅保留一个抽象方法。例如,我们可以定义一个名为 Greeting 的接口,其中包含一个 sayHello 方法。这个接口可以被任何符合其签名的 Lambda 表达式实现。

import java.util.function.Function;
@FunctionalInterface
interface Greeting {
String sayHello(String name);
}
public class Main {
public static void main(String[] args) {
// 使用 Lambda 表达式实现接口
Greeting greeting = (name) -> "Hello, " + name;
System.out.println(greeting.sayHello("World"));
}
}
如何使用内置的函数式接口
Java 8 引入了 java.util.function 包,提供了大量常用的函数式接口,如 Function、Predicate 和 Consumer。这些接口可以直接用于 Stream API 或方法引用,避免重复定义简单的接口。

import java.util.function.Function;
import java.util.function.Predicate;
public class Main {
public static void main(String[] args) {
// 使用 Function 接口进行转换
Function<string integer> lengthFunc = String::length;
System.out.println(lengthFunc.apply("Hello")); // 输出 5
// 使用 Predicate 接口进行判断
Predicate<integer> isEven = n -> n % 2 == 0;
System.out.println(isEven.test(4)); // 输出 true
}
}</integer></string>
函数式接口在 Stream API 中的具体应用
函数式接口在 Stream API 中扮演着关键角色,特别是在处理集合数据时。例如,可以使用 filter 方法配合 Predicate 接口来过滤元素,或使用 map 方法配合 Function 接口来转换元素。这种用法不仅简洁,还能充分利用 Java 的并行处理能力。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











