函数式接口
概念:函数式接口就是一个有且只有一个抽象方法的接口(可以有其他非抽象的方法)。
在jdk8以后,在java.util.function包下新增了一大堆接口,都是函数式接口,代表了接口调用的各种不同应用场景。
主要包括四大核心函数式接口:
消费型接口(Consumer<T’>,泛型参数,返回值为空)
Consumer<String> consumer = s -> { System.out.println(s); };
consumer.accept("cjq");
供给型接口(Supolier<T’>,无参,泛型返回值)
Supplier<Integer> supplier = () -> {return 123;};
System.out.println(supplier.get());
布尔型接口(Predicate<T’>,泛型参数,布尔返回值)
Predicate<Double> predicate = s -> {return s==0.0;};
System.out.println(predicate.test(0.1));
函数型接口(Function<T,R>,泛型参数,泛型返回值)
Function<String,Integer> function = s -> {return s.length();};
System.out.println(function.apply("cjq"));
关于@FunctionalInterface注解
@FunctionalInterface注解是对函数式接口的标识,他的作用是对接口进行编译级别的检查,如果一个接口使用了这个注解,但是写了两个抽象方法,会出现编译错误。
有啥用?装逼啊!
什么,还不够装逼?那就试试函数式接口加Stream流:https://blog.csdn.net/weixin_44236420/article/details/106344732