java8

之前學習python,對數據進行處理就感覺到了lambda的簡潔,這次java8也添加了lambda表達式,確實很吸引人。週末學習了一下java8,有一些體會:

 Java8引入了lambda表達式,是一個很好的嘗試,它會使我們的代碼更加清爽,更加簡潔。但是請等一下,彆着急把我們手頭的代碼全部lambda化,lambda適合進行數值運算,或函數中的邏輯比較簡單的地方。不顧規則的使用,會使代碼變的臃腫,難以閱讀。

 1、 Java8引入了lambda表達式,讓函數可以像變量一樣使用。那麼,我們必須要規定lambda表達式的類型,java中給出了一些通用的類型,當然我們也可以自己定義一些類型,這些類型的本質就是函數式接口。而函數式接口,也就是有且只有一個方法的接口。

 下面我們寫一個自己的函數接口:

public interface MyInterface {
   void say(String s);
}
之後調用它:

 MyInterface myInterface = (s) -> {System.out.println(s);};
 myInterface.say("hello");

2、Java8中還在接口中實現了default方法,這個方法其實是爲了向前進行二進制兼容的,很棒的一個想法,任何實現了接口的方法,都會擁有接口的defalut方法(前提是接口沒有覆蓋它,如果實現了它的類或接口覆蓋了的話,那隻能調用子類的方法了)。集合中新增的foreach方法就是一個很好的例子。

默認函數是有必要。如果沒有默認函數的概念,代碼是無法兼容之前的代碼的。例如,我們在Iterable中定義了foreach函數,而所有實現了該接口的類都要實現這個方法,對JDK自身的類(ArrayList等)沒有問題,但是他會導致大量使用該接口的第三方的類庫或我們自己編寫的代碼無法使用。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章