四大函数式接口(有函数型接口和断定型接口(都是函数式接口))
新时代程序员:lambda表达式,链式编程,函数式接口,Stream流式计算
- 函数式接口:只有一个抽象方法的接口(
比如Runnable接口)注意看上面的注解@FunctionalInterface(函数式接口)
比如foreach里面的参数Consumer也是个函数式接口
看清楚参数也是一个函数式接口
分析jdk的函数包去了解接口(函数式接口)
这个下面就有一堆的接口了。(四大函数式接口)
- Consumer
- Function
- Predicate
- Supplier
第一步:function(函数型接口(有一个输入,有一个输出)函数式接口都可以用lambda简化)。注意两个概念,我们这里函数式是函数式,函数型是函数型(型是我们自己想的)
测试:(根据源码,传入一个参数,返回一个参数)
Lambda表达式简化函数式接口:
断定型接口(也是一个函数式接口)(Predicate<T>):只有一个输入参数,返回值只能是一个布尔值(型是我们自己命名的,式是注解规范(函数式接口))
Lambda表达式简化函数式接口
package org.example.threadpoolexecutor;
import java.util.function.Function;
/**
* 四大函数式接口(函数型接口(Function))有输入和返回值
*/
public class TestFunction {
public static void main(String[] args) {
// Function<String,String> function=new Function<String, String>() {//匿名内部类
// @Override
// public String apply(String str) {
// return str;
// }
// };
Function<String,String> function=(str)->{
return str;
};
System.out.println(function.apply("ssss"));
}
}
package org.example.threadpoolexecutor;
import java.util.function.Predicate;
/**
* 四大函数式接口(短定型接口(Predicate))只有一个输入参数和返回值是布尔值
*/
public class TestPredicate {
public static void main(String[] args) {
// Predicate<String> predicate= new Predicate<String>() {
// @Override
// public boolean test(String str) {
// return str.isEmpty();
// }
// };
Predicate<String> predicate=(str)->{
return str.isEmpty();
};
System.out.println(predicate.test(""));
}
}