Lambda表达式的好处

时间:2015-04-17 10:04:20

标签: java lambda

Lambda表达式比匿名类更好? 除了使代码不那么笨重,并避免混淆关键字"这"就像在这个例子中一样:

public class TestClass {

   public String variable = "Class Level Variable";


  {
    new Thread(new Runnable() {
        String variable = "Runnable Class Member";
        public void run() {
            System.out.println("->" + this.variable);
       }
    }).start();
  }

  public static void main(String[] args){
    TestClass a = new TestClass();   // prints "Runnable Class Member"
  }
}

然而在:

public class TestClass {

   public String variable = "Class Level Variable";

   {
    Runnable run = ()->{String variable = "Runnable Class Member";
                        System.out.println("->" + this.variable);     
                        };
    new Thread(run).start();
   }



  public static void main(String[] args){
    TestClass a = new TestClass();   // prints "Class Level Member"
  }
}

除此之外,我看不出有任何区别。你呢?

1 个答案:

答案 0 :(得分:1)

  

匿名类:如果需要声明字段或其他方法,请使用它。

     

Lambda表达式:如果要封装要传递给其他代码的单个行为单元,请使用它。例如,如果希望对集合的每个元素执行某个操作,完成进程或进程遇到错误,则可以使用lambda表达式。   如果您需要一个简单的功能接口实例并且不应用任何前述条件(例如,您不需要构造函数,命名类型,字段或其他方法),请使用它。

基于https://docs.oracle.com/javase/tutorial/java/javaOO/whentouse.html,在不需要类字段的情况下,如果代码较短,则应使用lambda表达式。由于代码密度较高,Lambda也更容易阅读。没有lambdas的代码需要很多行来表达基本概念。我认为lambdas比其他功能更像语法糖。

相关问题