java8题库

测验:Lambda表达式的等效方法引用

2019-08-21  本文已影响0人  草叶oo0

下列Lambda表达式的等效方法引用是什么?

(1)Function<String, Integer> stringToInteger = (String s) -> Integer.parseInt(s);
(2)BiPredicate<List<String>, String> contains = (list, element) -> list.contains(element);

答案如下。
(1)这个Lambda表达式将其参数传给了Integer的静态方法parseInt。这种方法接受一个需要解析的String,并返回一个Integer。因此,可以使用图3-5中的办法(Lambda表达式调用静态方法)来重写Lambda表达式,如下所示:Function<String, Integer> stringToInteger = Integer::parseInt;
(2)这个Lambda使用其第一个参数,调用其contains方法。由于第一个参数是List类型的,你可以使用图3-5中的办法,如下所示:BiPredicate<List<String>, String> contains = List::contains;这是因为,目标类型描述的函数描述符是(List<String>,String) -> boolean,而List::contains可以被解包成这个函数描述符。

图3-5

来源:java8实战

上一篇 下一篇

猜你喜欢

热点阅读