11. 四大函数式接口
新时代程序员:lambda 表达式、链式编程、函数式接口、Stream流式计算、(旧:泛型、枚举、反射)
函数式接口:只有一个方法的接口
@FunctionalInterface
public interface Runnable {
public abstract void run();
}
// 简化编程模型,在新版本的框架底层大量应用
Function 函数式接口
// 源码
@FunctionalInterface
public interface Function<T, R> {
/**
* Applies this function to the given argument.
*
* @param t the function argument
* @return the function result
*/
R apply(T t);
......
}
// 代码样例
public static void test1(){
/*Function<String, String> function = new Function<String, String>() {
@Override
public String apply(String o) {
return o;
}
};*/
Function function = (o)->{return o;};
System.out.println(function.apply("122341"));
}
Predicate 断定型接口:有一个输入参数,返回值只能是 布尔值!
// 代码样例
public static void test4(){
/*Predicate<String> predicate = new Predicate<String>() {
@Override
public boolean test(String o) {
return o.isEmpty();
}
};*/
Predicate<String> predicate = (str)->{return str.isEmpty()};
System.out.println(predicate.test("dadsad"));
}
Consumer 消费型接口:只有输入,没有返回值
// 代码样例
public static void test2(){
Consumer<String> consumer = (str )->{
System.out.println(str);
};
consumer.accept("1211");
}
Supplier 供给型接口: 没有参数,只有返回值
// 代码样例
public static void test3(){
Supplier<String> supplier = ()->{
return "1234";
};
System.out.println(supplier.get());
}