[英]Is there a syntax to get the reference to an anonymous inner class from a further anonymous inner class?
考慮這種情況:
public class SomeClass {
public void someMethod() {
new SomeInterface() {
public void someOtherMethod() {
new SomeOtherInterface() {
new someThirdMethod() {
//My question is about code located here.
}
};
}
};
}
}
是否有語法在注釋的代碼中引用SomeInterface表示的匿名內部類的實例? 對於SomeClass,您可以執行SomeClass.this
是否具有實現SomeInterface的等效項?
如果沒有,您當然可以只在SomeInterface實現中定義一個最終的局部變量並引用它,但是我只是想知道實際上是否有直接的語言支持來引用該實例。
之所以SomeInterface.this
無法編譯是因為封閉類不SomeInterface
,而是一些匿名類型。
您不能this
類型與匿名類型一起使用。 這就是為什么他們是匿名的 ; 您不能通過名稱來引用它們,而通過顯式地命名一個封閉的類型來限定this
的有效性。
嘗試像這樣的嘗試很誘人:
SomeClass$1.this
但是,然后您得到一個錯誤SomeClass$1 cannot be resolved to a type
; 盡管事實是,如果讓該代碼在沒有這一行的情況下進行編譯,則(很可能)它將創建SomeClass$1.class
。
您可以使用非匿名類並使用this
限定,也可以使用您提到的final
局部變量技術。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.