函数式接口
java8开始,内置了四大默认的函数式接口,函数式接口是只有一个方法的接口。函数式接口对于简化代码来说有很大作用,四大接口分别是:
Consumer :消费型接口
-
void accept(T t);
Supplier :供给型接口
-
T get();
Function<T, R> :函数型接口
-
R apply(T t);
Predicate :断言型接口
-
boolean test(T t);
Function函数型接口
该接口要求输入类型T和返回类型R
public class LambdaTest {
public static void main(String[] args) {
//普通实现
Function function = new Function<String,String>() {
@Override
public String apply(String str) {
return str;
}
};
//function 实现
Function<String,String> function = (str)->{
return str;
};
System.out.println(function.apply("hahaha"));
}
}
Predicate断定型接口
要求有一个输入参数,返回值只能是布尔值
public class LambdaTest {
public static void main(String[] args) {
//普通实现
Predicate<String> predicate = new Predicate<String>() {
@Override
public boolean test(String s) {
return s.isEmpty();
}
};
//Predicate实现
Predicate<String> predicate = (str)->{
return str.isEmpty();
};
System.out.println(predicate.test("hshsh")); //false
System.out.println(predicate.test("")); //true
}
}
Supplier :供给型接口
没有参数,只有返回值(可以理解为提供者,必须要有返回才能成为提供者)
public class LambdaTest {
public static void main(String[] args) {
//普通实现
Supplier<Integer> supplier = new Supplier<Integer>() {
@Override
public Integer get() {
return 122;
}
};
//Supplier 实现
Supplier supplier1 = ()->{
return 123;
};
System.out.println(supplier.get());
System.out.println(supplier1.get());
}
}
Consumer :消费型接口
与提供型接口相反,只有输入,没有返回
public class LambdaTest {
public static void main(String[] args) {
//普通实现
Consumer<String> consumer = new Consumer<String>() {
@Override
public void accept(String s) {
System.out.println(s);
}
};
//Consumer实现
Consumer<String> consumer1 = (str)->{
System.out.println(str);
};
consumer.accept("hahaha");
consumer1.accept("hehehe");
}
}