1. 程式人生 > >接口,lambda表達式與內部類(一)

接口,lambda表達式與內部類(一)

引用 png 9.png width 提取 表達式 提取器 The bsp

關於Comparator接口的comparing方法中的鍵提取器函數:

技術分享圖片

還有thenComparing方法:
技術分享圖片

...一些瑣碎的東西

內部類

內部類是定義在另一個類中的類

使用內部類的原因:
技術分享圖片

A類包含B類,創建A類實例的過程中不會包含B類實例

b有一個隱式引用,指向了創建它的外部對象a

再具體一點的實現:

技術分享圖片

關於內部類的私有性:
技術分享圖片

關於內外類如何引用:

技術分享圖片

(上面也可以省略this)

在TimePrinter是一個公有內部類的情況下,則下面也成立:

技術分享圖片

內部類中聲明的靜態域的特殊之處:

技術分享圖片

內部類的實現:

技術分享圖片

一個問題:

技術分享圖片

外部類多了一個access$0靜態方法,用於給內部類提供訪問外部類的方法,但這種做法也存在安全隱患

局部內部類

在一個方法中定義的類稱為局部類

局部類的作用域和隱藏性:

技術分享圖片

局部類可以訪問包含它們的外部類,還可以訪問局部變量(事實上為final,一旦賦值就不會改變)

下文中,TimePrinter是一個局部類經過反射後的結果,beep是在方法中傳入的一個變量(一個final的類型)

技術分享圖片

技術分享圖片

突破final限制的方法:
技術分享圖片

接口,lambda表達式與內部類(一)