java 8 lambda表达式
一、lambda 表达式优点:1.函数式编程 2.参数类型自动推断 3.代码少、简洁
Lambda表达式是对象,是一个函数式接口的实例
语法 : LambdaParameters(参数)-> LambdaBody(实现逻辑)
二、lambda表达式的使用场景:
任何有函数式接口的地方。
函数式接口:有且仅有一个抽象方法(与Object类中方法同名的不算),但是可以有多个非抽象方法的接口。
标志函数式接口的注解@FunctionInterface,如果为非函数式接口会报错。
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新增的函数式接口(java.util.function下的接口)(较多结合Stream使用)
Suppliter 代表一个输出 Consumer 代表一个输入 BiConsumer代表两个输入 Function 代表一个输入一个输出(一般输入和输出是不同类型的) UnaryOperator 代表一个输入一个输出(输入和输出是相同类型的) BiFunction 代表两个输入一个输出(一般类型不同) BinaryOperator 代表两个输入一个输出(类型相同)
三、lambda表达式简写规则