简介
函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。函数式接口可以被隐式转换为 lambda 表达式。Lambda 表达式和方法引用(实际上也可认为是Lambda表达式)上。
可以使用Lambda表达式来表示该接口的一个实现(注:JAVA 8 之前一般是用匿名类实现的):
Function<Integer,Integer> function = s -> 123 + s;
System.out.println(function.apply(5));
函数式接口可以对现有的函数友好地支持 lambda。
JDK 1.8 之前已有的函数式接口
JDK 1.8 之前已有的函数式接口:
- java.lang.Runnable
- java.util.concurrent.Callable
- java.security.PrivilegedAction
- java.util.Comparator
- java.io.FileFilter
- java.nio.file.PathMatcher
- java.lang.reflect.InvocationHandler
- java.beans.PropertyChangeListener
- java.awt.event.ActionListener
- javax.swing.event.ChangeListener
JDK 1.8 新增加的函数接口介绍
JDK 1.8 新增加的函数接口:
- java.util.function
java.util.function 它包含了很多类,用来支持 Java的 函数式编程,该包中的函数式接口有:
Java四大核心函数式接口
常用函数式接口举例使用
public static void main(String[] args) {
//Function 函数型接口
Function<Integer,Integer> function = s -> 123 + s;
System.out.println(function.apply(5));
//Predicate 断言型接口
Predicate<String> predicate = (s -> s.contentEquals("abc"));
System.out.println(predicate.test("abc"));
//Supplier 供给型接口
Supplier<String> supplier = () -> "abc";
System.out.println(supplier.get());
//消费型接口
Consumer<String> consumer = System.out::println;
consumer.accept("abc");
BiFunction<Integer,Integer,Integer> biFunction = (k,v) -> k + v;
System.out.println(biFunction.apply(1, 2));
}
结果:
128
true
abc
abc
3
** 可以参考其接口描述,对函数式接口做一个了解,此处就不一一展开测试了**
版权声明:本文为weixin_45952781原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。