Skip to main content

匿名のインナークラスとは何ですか?

objectオブジェクト指向のコンピュータープログラミングでは、匿名のインナークラスは、メソッド内で宣言されているが名前が付けられていないクラスです。匿名の内部クラスには、アクセスできる変数の範囲の制限など、通常のクラスとは異なるいくつかの制限があります。匿名の内部クラスを使用することでソースコードをより読みやすくすることができる非常に具体的な状況がいくつかありますが、それは主に、個別のクラスの生成がそれを複雑にする可能性のあるカプセル化を実施するために使用されます。(OOP)オブジェクトとそのコンポーネントが何らかの方法で保護され、オブジェクトにバインドされるべきであること。匿名の内部クラス、および一般的な内部クラスは、特に複雑なオブジェクトのカプセル化を実現するのに役立ちます。個別の外部のクラスに依存し、それらを人為的に、潜在的にコンポーネントの一部を潜在的に結合するクラスを作成する代わりに、匿名の内側クラスは2つをしっかりと結びつけることができます。単一の相続の制限を克服するのに役立ちます。オブジェクトが1つのクラスから継承され、その後別のクラスにアクセスする必要がある場合、その場で内部クラスを生成してから、適切なハンドラーに渡すことができます。この手法は、コールバックとイベントリスナーによく見られます。唯一の選択肢は、1つまたは2つの方法のみがオーバーライドされる2番目のクラス全体を作成することです。主な制限は、匿名の内部クラスが、これらの変数が最終として宣言されない限り、それが存在する方法の変数にアクセスできないことです。これは、内側のクラスが、それが巣を作るクラスの寿命と方法を超えて機能し続けることができるためです。ラッピングクラスの変数は、その寿命が終わったら破壊されるため、保持されている内部クラスの参照は即座に無効になります。これの唯一の例外は、インスタンスを超えて存在するため、最終変数です。多くのOOP言語は、反射と呼ばれるメカニズムを提供します。リフレクションにより、プログラムは別のクラスを分析し、そのメンバー変数とメソッドが何であるかを確認できますが、コード自体ではありません。匿名の内部クラスを使用することにより、内側のクラスの内容は反射から保護され、より大きなクラスの内側の仕組みは効果的に隠すことができます。