函数式接口:只有一个方法的接口
如:Runnable、foreach等
一、Function:函数式接口
传入参数T,返回类型R
//Function 函数式接口,有一个输入参数,有一个输出参数
//只要是函数式接口就可以用lambda表达式简化
public class Demo01 {
public static void main(String[] args) {
//工具类:输出输入的值
/*Function function =new Function<String,String>() {
@Override
public String apply(String str) {
return str;
}
};*/
Function function=(str)->{return str;};
System.out.println(function.apply("hhh"));
}
}
二、Predicate:断定型接口
传入类型T,返回类型boolean
//断定型接口:有一个输入参数,返回值只能是布尔值
public class Demo02 {
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(""));
}
}
三、Consumer:消费型接口
传入参数类型T,没有返回值
//消费型接口,只有输入,没有返回值
public class Demo03 {
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) -> {System.out.println(str);};
consumer.accept("haha");
}
}
四、Supplier:供给型接口
没有参数,返回类型T
//供给型接口,没有参数,只有返回值
public class Demo04 {
public static void main(String[] args) {
/*Supplier<Integer> supplier = new Supplier<Integer>() {
@Override
public Integer get() {
System.out.println("get()");
return 1024;
}
};*/
Supplier<Integer> supplier =()->{
System.out.println("get()");
return 1024;
};
System.out.println(supplier.get());
}
}