Lambda表达式
lambda是将一个函数做为一个参数进行传递。java
语法
(parameters) -> expression
express
(parameters) ->{ statements; }
app
前面是参数,后面是方法的执行体,只有一行代码能够省略花括号,只有一个参数也能够省略参数的括号。函数
使用范围spa
只有一个抽象方法的接口中的方法均可以使用lambda表达式进行编写code
java8提供的接口对象
java8内置提供了4个用于lambda的接口接口
-
predicate接口get
-
断言接口,接受一个参数返回一个boolean类型的值,用于判断的时候使用,好比compareio
-
boolean test(T t);
-
-
consumer接口
-
消费者接口,接受一个参数不返回值,对参数进行处理,打印之类的操做
-
void accept(T t);
-
-
function<T,R>接口
-
方法处理接口,接受一个任意类型的参数,返回自定义类型的参数
-
R apply(T t);
-
-
supplier接口
-
生产者接口,不接受参数,返回任意类型的值
-
T get();
-
方法引用
-
构造方法的引用:
HashMap::new
==()->new String()
-
特定对象的方法引用
x::toString
==()->x.toString()
-
public void example() { String x = "hello"; function(x::toString); }
-
-
任意对象的实例方法引用
String::toString
==(s) -> s.toString()
-
静态方法引用
String::valueOf
==`(s) -> String.valueOf(s)