国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

oop - Java では、匿名の內(nèi)部クラスが外部クラスのメソッドを呼び出すことについての疑問
漂亮男人
漂亮男人 2017-05-17 10:07:37
0
1
1164

今日、私は內(nèi)部クラスについて學(xué)び、內(nèi)部クラスが外部クラスの this を保持できるため、OuterClass.this.medthod() を內(nèi)部クラスで使用して、対応する外部クラスのメソッドを參照できることを?qū)Wびました。コードを書いて実行することはできますが、呼び出しロジックがよくわかりません。教えていただければ幸いです。

リーリー

設(shè)計は次のようになります。テスト オブジェクトは、新しい Speaker 匿名クラス オブジェクトを作成する Perform メソッドを呼び出します。オブジェクトは、その handleAction メソッドを呼び出します。このメソッドのパラメータは Action インターフェイスであり、インターフェイスはアクション抽象メソッド。テストに付屬のレポートメソッドを使用しました。出力は正常です。

そこで知りたいのですが、テストオブジェクトのメソッドに匿名クラスのローカルオブジェクトがあり、ローカルオブジェクトのパラメータがインターフェースを?qū)g裝した匿名クラスなのですが、なぜこの匿名クラスでレポートが呼び出せるのでしょうか? test.this ポインタを保持していますか?
私の理解では、new Speaker().handleAction(new Action(){....ここでの実裝ロジックは test.this とは何の関係もなく、test を保持する必要もありません。 。 これ???###

漂亮男人
漂亮男人

全員に返信(1)
洪濤

リーリー

new Speaker()不是匿名內(nèi)部類,它有確切的類名Speaker
new Action(){}是匿名內(nèi)部類,會在編譯的時候給它一個類名(我們假定它的類名叫Test,你可以打印this.getClass()看看)
看出兩者的區(qū)別了嗎?匿名內(nèi)部類多出了個{}。
由于new Action(){}はテストオブジェクトのスコープ內(nèi)に作成されるため、その外部クラスはTestになります。

匿名內(nèi)部クラスにもコンストラクターがあり、通常のクラスのコンストラクターとは少し異なります。コンパイル時に、匿名內(nèi)部クラスのコンストラクターのパラメーター リストの前に別のパラメーターが挿入されます。このパラメーターはオブジェクトへの參照です。外部クラスのコンパイル クラスは次のようになります:

リーリー

new Action(){...}実際には、Test$1が作成され、コンストラクターを通じてテストオブジェクト參照がTest$1に渡されます

リーリー

したがって、匿名の內(nèi)部クラスは外部クラスへの參照を保持し、外部クラスのメソッドを呼び出すことができます

最新のダウンロード
詳細(xì)>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート