函数式接口指的是有且只有一个抽象方法的接口,在学习 函数式编程和Lambda表达式 中我们经常遇到,但是这些函数式接口都是我们自定义的,其实,在 Java 中,有着自带的函数式接口,以下就是一些常用的函数式接口。
Function 接口
@FunctionalInterface
public interface Function<T, R>
功能性接口,接受一个 T 类型的参数,将结果以 R 类型的方式输出,函数式方法是apply(T)。
public static void main(String[] args) {
//Function 接口
Function<Integer, String> function = x -> String.valueOf(x + 114511);
//调用方法
String y = function.apply(3);
//打印
System.out.println(y);
}打印结果:
Consumer接口
@FunctionalInterface
public interface Consumer<T>
消费者接口,接受一个 T 类型参数,但是不返回值,常用于输出某些值,函数式方法是 accept(T)。
public static void main(String[] args) {
//Consumer 接口
Consumer<Integer> consumer = System.out::println;
//调用方法
consumer.accept(1919810);
}执行结果:
![]()
Supplier接口
@FunctionalInterface
public interfaceSupplier<T>
生产者接口,不接受任何参数,但是要返回一个 T 类型的值,函数式方法是 get()。
public static void main(String[] args) {
//Supplier 接口
Supplier<String> supplier = () -> "诶嘿哈哈哈哈哈,Supplier 来咯";
//调用方法
System.out.println(supplier.get());
}打印结果:
![]()
Predicate 接口
@FunctionalInterface
public interface Predicate<T>
接受一个 T 类型的参数,返回一个布尔类型的结果,类似于 Function<T, Boolean>,函数式方法是 test(T)。
public static void main(String[] args) {
//Predicate 接口
Predicate<String> predicate = x -> x.equals("鸡汤来咯");
//调用方法
System.out.println(predicate.test("鸡汤来咯"));
System.out.println(predicate.test("寄汤来咯"));
}打印结果:
版权声明:本文为qq_48772498原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。