簡體   English   中英

是否有語法從另一個匿名內部類中獲取對匿名內部類的引用?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM