Lambda表达式在Java或Android中入门

  |   0 评论   |   66 浏览

  • Lambda是java8开始支持的一种语法格式,可以使用更少的代码实现更多功能。
  • 其本质与java6等相比,只是语法改变,使用Lambad语法写成的java编译成class后与java6写成的java编译的class无本质区别。由此可见,减少了代码量的同时,也减少了可读性,增加了维护难度。
  • 权威的文档可以参考此处
  • 如果要在java6或者java7中使用Lambda,可以使用retrolambda
  • 如果要在Android中使用Lambda,并且使用gradle构建,可以使用gradle-retrolambda

Lambda表达式的语法
基本语法:
(parameters) -> expression

(parameters) ->{ statements; }

举个栗子

// 1. 不需要参数,返回值为 5  
() -> 5  
  
// 2. 接收一个参数(数字类型),返回其2倍的值  
x -> 2 * x  
  
// 3. 接受2个参数(数字),并返回他们的差值  
(x, y) -> x – y  
  
// 4. 接收2个int型整数,返回他们的和  
(int x, int y) -> x + y  
  
// 5. 接受一个 string 对象,并在控制台打印,不返回任何值(看起来像是返回void)  
(String s) -> System.out.print(s)

匿名内部类的写法

// 1.1使用匿名内部类  
new Thread(new Runnable() {  
    @Override  
    public void run() {  
        System.out.println("Hello world !");  
    }  
}).start();  
  
// 1.2使用 lambda expression  
new Thread(() -> System.out.println("Hello world !")).start();  
  
// 2.1使用匿名内部类  
Runnable race1 = new Runnable() {  
    @Override  
    public void run() {  
        System.out.println("Hello world !");  
    }  
};  
  
// 2.2使用 lambda expression  
Runnable race2 = () -> System.out.println("Hello world !");  
   
// 直接调用 run 方法(没开新线程哦!)  
race1.run();  
race2.run();  

知识共享许可协议

评论

发表评论

validate