本節涉及的知識點:
this表達式,inner關鍵字,擴展函數,標簽,lambda表達式,屬性的方法定義。重點理解this與inner,其他知識點后續章節詳細闡述。
1、this表達式
在kotlin中,為了表示當前接收者的對象,我們可以使用this關鍵字(表達式):
類成員函數中:this指該類的當前對象;
在擴展函數或者帶接收者的字面數中:this指在點左側傳遞的接收者參數;
如果this沒有限定符,默認指包含它的最內層作用域,如果需要引用其他作用域中的this,需要使用標簽限定符(this@label,label是一個標簽)。
運行結果:
2、inner關鍵字
kotlin中支持類的嵌套(內部類),不過和java中不一樣(java中包含一個指向外部類的對象的引用),kotlin中所有的內部類默認為靜態的,這樣很好的減少了內存泄漏問題。如果需要在內部類引用外部類的對象,可以使用inner聲明內部類,使內部類變為非靜態的,通過this@外部類名,指向外部類。
通過以下代碼更好的理解上述文字描述:
調用代碼:
代碼說明:
1、inner修飾的內部類可理解為java中的非靜態內部類,調用方式:
外部類().內部類().方法();
2、kotlin內部類默認為靜態的,理解為java中使用static修飾的內部類,調用方式:
外部類.內部類().方法();
3、如果需要在靜態內部類中使用外部類,可參考java中實現方式,在內部類中定義外部類弱引用,通過構造方法傳入外部類對象;
感謝瀏覽!