标签:
在 Java 中,函数式接口(Functional Interface)指的是只包含一个抽象方法的接口。函数式接口是支持函数式编程的基础,可以被Lambda 表达式和方法引用所使用。
Java 8 引入了 @FunctionalInterface
注解,用于显式标识一个接口为函数式接口,这个注解可以帮助编译器检查接口是否符合函数式接口的定义。
以下是一些常见的函数式接口:
Runnable
:代表一个没有参数和返回值的任务。
@FunctionalInterface
public interface Runnable {
void run();
}
Java
Consumer
:接收一个参数并且没有返回值。
@FunctionalInterface
public interface Consumer<T> {
void accept(T t);
}
Java
Supplier
:不接收任何参数,返回一个结果。
@FunctionalInterface
public interface Supplier<T> {
T get();
}
Java
Function
:接收一个参数并返回一个结果。
@FunctionalInterface
public interface Function<T, R> {
R apply(T t);
}
Java
Predicate
:接收一个参数,并返回一个布尔值结果。
@FunctionalInterface
public interface Predicate<T> {
boolean test(T t);
}
Java
除了以上列举的函数式接口,Java 8 还提供了一些其他的函数式接口,如 BiFunction
、UnaryOperator
、BinaryOperator
等。
函数式接口可以通过 Lambda 表达式和方法引用来创建对象实例。Lambda 表达式是一种简洁的语法形式,可以代替某些接口的实现类的写法,从而使代码更加简洁和易读。
例如,使用 Consumer
函数式接口输出一个集合的所有元素:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
numbers.forEach(number -> System.out.println(number));
Java
函数式接口的引入使得 Java 在处理函数式编程方面有了更好的支持,可以更方便地编写函数式风格的代码。
标签: 来源:
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。