-4

私は単純なクラスを持っています:

Public class Store {
   Product product = new Product();

   public class Product{
      Store getStore(){
         //What does this return statement mean?
         return Store.this;
      }
   }
}

Store.this;return ステートメントの が、Storeをホストするインスタンスを意味するかどうか疑問に思っていますproduct

4

3 に答える 3

3

はい、そうです。JLS 15.8.4を参照してください: これを修飾しました:

字句的に囲んでいるインスタンス (§8.1.3) は、キーワード this を明示的に修飾することで参照できます。

ClassName で示されるクラスを C とする。C が修飾された this 式が現れるクラスの n 番目の字句的に囲んでいるクラスであるような整数を n とします。

ClassName.this の形式の式の値は、字句的に n 番目に囲まれた this のインスタンスです。

この場合、レキシカル エンクロージング インスタンスはStoreインスタンスです。

于 2013-06-23T16:07:48.490 に答える
0

Store内部クラス (この場合は) のインスタンスを作成するには、外部クラス (この場合は ) のインスタンスが必要ですProduct。したがって、内部クラスでは、内部クラスによって返されるインスタンスOuterClass.thisの違いをマークするために使用できます。this

于 2013-06-23T16:06:46.320 に答える
0
Public class OuterClass{    
   public class InnerClass{
         //OuterClass.this is used to refer the current reference of outer class
         //this referes to the current instance of innner (self) class
   }
}
于 2013-06-23T16:09:35.723 に答える