1、什么是函数式接口
函数接口是只有一个抽象方法的接口,用作 Lambda 表达式的类型。使用 @FunctionalInterface 注解修饰的类,编译器会检测该类是否只有一个抽象方法或接口,否则,会报错。可以有多个默认方法,静态方法。
有且只有一个抽象方法的接口
场景:
适用于函数式编程场景(使用 lambda 表达式编程)的接口,函数式接口可以适用于 lambda 使用的接口。
只有确保接口中有且只有一个抽象方法, java 中的 lambda 才能顺利推到
2.java提供四种类型的函数式接口
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
package day06.java8; /* java提供四种类型的函数式接口 Function<T,R>, 转换类型,传入一个T类型,传出一个R类型 Consumer<T> 消费型 Supplier<T>,什么都不传,给返回一个对象 Predicate<T> 断言型,传入一个T类,返回断言true false */
import org.apache测试数据mons.lang3.RandomStringUtils;
import java.util.function.Consumer; import java.util.function.Function; import java.util.function.Predicate; import java.util.function.Supplier;
public class Demo04 { public static void main(String[] args) { // Function<T,R>, 转换类型 Function<String,Integer> function =str -> str.length(); Integer abc = function.apply( "abc" ); System.out.println(abc); // Consumer<t> 消费型 Consumer<String> consumer =str-> System.out.println(str); consumer.accept( "abc" ); //Supplier<T>,什么都不传,给返回一个对象 // 这里随机返回一个长度为8的字符串 Supplier<String> supplier = ()-> RandomStringUtils.randomAlphanumeric( 8 ); String s = supplier.get(); System.out.println(s); // Predicate<T> 断言型,传入一个T类,返回断言true false Predicate<String> predicate =str->str.length()> 3 ; boolean test = predicate.test( "abcd" ); System.out.println(test);
} } |
到此这篇关于java提供的4种函数式接口的文章就介绍到这了,更多相关java函数式接口内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
原文链接:https://blog.csdn.net/qq_39208536/article/details/122751178