程序员

Java 8 Lambda表达式, 入门的最佳姿势

2017-08-26  本文已影响0人  橘汁绊饭

Lambda 表达式,自从被Java8引入以来,真的堪称是最大最重量级的新特性。 Lambda丰富了功能化编程,简化了程序员的代码书写。

语法

parameter -> expression body

what? Are you kidding me?
这么简单?

是的 就是这么简单!

我们来看看lambda的一些重要特点:

说了这么多,那我们来看看具体的用法吧,光说不练假把式, 代码见

public class Java8Tester {
   public static void main(String args[]){
      Java8Tester tester = new Java8Tester();
        
      //with type declaration
      MathOperation addition = (int a, int b) -> a + b;
        
      //with out type declaration
      MathOperation subtraction = (a, b) -> a - b;
        
      //with return statement along with curly braces
      MathOperation multiplication = (int a, int b) -> { return a * b; };
        
      //without return statement and without curly braces
      MathOperation division = (int a, int b) -> a / b;
        
      System.out.println("10 + 5 = " + tester.operate(10, 5, addition));
      System.out.println("10 - 5 = " + tester.operate(10, 5, subtraction));
      System.out.println("10 x 5 = " + tester.operate(10, 5, multiplication));
      System.out.println("10 / 5 = " + tester.operate(10, 5, division));
        
      //without parenthesis
      GreetingService greetService1 = message ->
      System.out.println("Hello " + message);
        
      //with parenthesis
      GreetingService greetService2 = (message) ->
      System.out.println("Hello " + message);
        
      greetService1.sayMessage("Orange");
      greetService2.sayMessage("Cat");
   }
    
   interface MathOperation {
      int operation(int a, int b);
   }
    
   interface GreetingService {
      void sayMessage(String message);
   }
    
   private int operate(int a, int b, MathOperation mathOperation){
      return mathOperation.operation(a, b);
   }
}

验证结果

如果你直接使用IDE的话,直接运行就好,如果你喜欢用命令行的话,

$javac Java8Tester.java
$java Java8Tester

结果:

10 + 5 = 15
10 - 5 = 5
10 x 5 = 50
10 / 5 = 2
Hello Orange
Hello Cat

Lambda表达式主要还是被用来定义那些只有一个方法的接口,这种情况下,我们可以直接使用Lambda表达式来省略我们的大量方法。它最大的好处就是 消除了繁杂的匿名内部类 的写法,各种大括号,小括号。
我相信有Android开发经验的人应该能了解吧。那种匿名内部类给你带来的恐惧

上一篇下一篇

猜你喜欢

热点阅读