《Java 8 in Action》Chapter 8:重構、測試和除錯
阿新 • • 發佈:2019-08-29
我們會介紹幾種方法,幫助你重構程式碼,以適配使用Lambda表示式,讓你的程式碼具備更好的可讀性和靈活性。除此之外,我們還會討論目前比較流行的幾種面向物件的設計模式,
包括策略模式、模板方法模式、觀察者模式、責任鏈模式,以及工廠模式,在結合Lambda表示式之後變得更簡潔的情況。最後,我們會介紹如何測試和除錯使用Lambda表示式和Stream API的程式碼。
1. 為改善可讀性和靈活性重構程式碼
1.1 改善程式碼的可讀性
Java 8的新特性也可以幫助提升程式碼的可讀性:
- 使用Java 8,你可以減少冗長的程式碼,讓程式碼更易於理解
- 通過方法引用和Stream API,你的程式碼會變得更直觀
利用Lambda表示式、方法引用以及Stream改善程式程式碼的可讀性:
- 重構程式碼,用Lambda表示式取代匿名類
- 用方法引用重構Lambda表示式
- 用Stream API重構命令式的資料處理
1.2 從匿名內部類到Lambda表示式的轉換
將實現單一抽象方法的匿名類轉換為Lambda表示式
// 傳統的方式,使用匿名類 Runnable r1 = new Runnable(){ public void run(){ System.out.println("Hello"); } } // 新的方式,使用Lambda表示式 Runnable r2 = () -> System.out.println("Hello");
匿名 類和Lambda表示式中的this和super的含義是不同的。在匿名類中,this代表的是類自身,但是在Lambda中,它代表的是包含類。其次,匿名類可以遮蔽包含類的變數,而Lambda表示式不能(它們會導致編譯錯誤),如下面這段程式碼:
int a = 10; Runnable r1 = () -> { int a = 2; // 編譯錯誤 System.out.println(a); }; Runnable r2 = new Runnable() { public void run() { int a = 2; // 正常 System.out.println(a); } }
在涉及重