最近from this question據我瞭解,下面似乎是合法的Java:Java:使用「this」作爲實例方法的參數/參數名稱?
class Bar {
void foo(Bar this) {}
}
現在,我試圖找到其中的Java標準它說,你被允許這樣做,看着here,但我找不到該部分。
有人可以引用它允許這種形式的方法聲明以及聲明名爲this
的參數的限制是什麼?
最近from this question據我瞭解,下面似乎是合法的Java:Java:使用「this」作爲實例方法的參數/參數名稱?
class Bar {
void foo(Bar this) {}
}
現在,我試圖找到其中的Java標準它說,你被允許這樣做,看着here,但我找不到該部分。
有人可以引用它允許這種形式的方法聲明以及聲明名爲this
的參數的限制是什麼?
它適用於1.8或更高版本的JDK。
接收機參數是一個實例方法或內部類的構造可選句法設備。對於實例方法,receiver參數表示調用該方法的對象。對於內部類的構造函數,receiver參數表示新構造對象的立即封閉實例。無論採用哪種方式,接收者參數都只存在於允許表示對象的類型在源代碼中表示,以便該類型可能被註釋。
如果你讀你會發現下面的小鬼註解的全部要點,
當一個接收機參數是允許的,其類型和名稱具體如下:
在實例方法中,接收者參數的類型必須是聲明方法的 類或接口,並且名稱爲 接收器參數必須是這個;否則,發生編譯時錯誤 。
在一個內部類的構造函數,該接收器參數 的類型必須是類或接口,其是內部類的立即封閉 類型聲明,並且接收機 參數的名稱必須是標識符。這裏標識符是簡單的 類或接口的名稱,它是立即包含內部類的 類型聲明;否則,發生編譯時錯誤 。
這很酷。因爲我知道我試圖想出這個「JLS」背景;但我最初的懶惰嘗試失敗。感謝你,我現在知道! – GhostCat