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 类似)

上一篇下一篇

猜你喜欢

热点阅读