新时代的程序员:Lambda表达式,链式编程,函数式编程,Stream流式计算
什么是函数型接口?
只有一个方法的接口
哪里会用到?
举个例子:
集合中ArrayList里面有一个foreach()方法.但是里面的参数:
@FunctionalInterface
public interface Runnable {
public abstract void run();
}
//超级多FunctionalInterface
//简化编程模型,在新的框架底层大量应用
//foreach(消费者类的函数式接口)
这就是四大函数式接口之一.学会这个能让我们看源码更轻松点
回到正题:
1.Function
源码:
只要是函数式接口都可以使用Lambda表达式
2.接口二:Predicate(断定性接口)
package com.qiu.function;
import java.util.function.Predicate;
public class PredicateDemo02 {
//断定性接口:有一个输入参数,返回值只能是布尔值
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();};//Lambda表达式
System.out.println(predicate.test("sfds"));
}
}
3.Consumer 消费型接口(对应supplier)
代码示例:
package com.qiu.function;
import java.util.function.Consumer;
/**
* Consumer接口:只有输入,没有返回值
*/
public class ConsumerDemo01 {
public static void main(String[] args) {
// Consumer<String> consumer = new Consumer<String>() {
// @Override
// public void accept(String str) {
// System.out.println(str);
// }
// };
Consumer<String> consumer =str->{return;};
consumer.accept("dsfasfsafd");
}
}
4.Supplier 供给型接口
代码示例:
package com.qiu.function;
import java.util.function.Supplier;
public class SupplierDemo01 {
public static void main(String[] args) {
// Supplier<String> supplier = new Supplier<String>() {
// @Override
// public String get() {
// return "DSFDSFSDFSDF";
// }
// };
Supplier<String> supplier =()->{return "dsdfsdfsdf";};
System.out.println(supplier.get());
}
}