JAVA Lambda表达式
2018-09-20 本文已影响16人
启灵Alex
无意间发现了一个从java8开始支持的好玩的东西——Lambda表达式,
或许这个东西能给我们带来便利,但是却又降低了代码的可读性。
lambda表达式能让你用一行表达式代替一个方法、甚至更多,但是通常使用在匿名内部类或者集合方面。
Lambda表达式的语法:
(int x, int y) -> x + y
() -> 42
(String s) -> { System.out.println(s); }
lambda表达式就和方法一样,提供了一个参数列表和一个使用这些参数的主体,可以是一个表达式或一个代码块。
第一个lambda表达式接收x和y这两个整形参数并返回它们的和
第二个lambda表达式不接收参数,返回整数'42'
第三个lambda表达式接收一个字符串并把它打印到控制台,不返回值
未细入研究,代码示例
package test;
import java.util.Arrays;
import java.util.List;
public class Demo {
public static void main(String[] args) {
String[] str = {"aaa", "bbb","ccc"};
List<String> arr = Arrays.asList(str);
arr.forEach((arrs) -> System.out.println(arrs+","));
arr.forEach(System.out::println);//双冒号操作符
Runnable rn = () -> System.out.println("Hello world !");
rn.run();
new Thread(() -> System.out.println("Hello world !")).start();
}
}
因为lambda表达式的类型是不确定的,它的类型是由其上下文推导而来。它可以是不同类的实例。(个人猜测与java10开始支持的局部变量类型var 类似)