3

メソッド内でクラスを定義する利点はありますか。メソッド内でリスナークラスを定義することを好む人を見ましたが、これを行う本当の利点はありますか?

4

3 に答える 3

5

匿名の内部クラスまたはローカル内部クラスを意味すると思います。相違点と利点については、この記事を参照してください。私の考えでは、最大の利点は、コードが別のファイルではなく、使用される場所にあることです。

于 2012-06-09T10:17:15.340 に答える
3

これには次の 2 つの理由があります。

  • ロジックの局所性。論理的かつ緊密に関連するコードの部分が散らばっていると、理解するのが難しくなります。
  • メソッド内でクラスを定義すると、スコープ内で使用可能なローカル変数に近づきますこのようにして、不必要な引数の受け渡しが回避されます。
于 2012-06-09T10:33:17.547 に答える
1

これは InnerClass という名前で、これにより、分離されたクラスとして正式に定義する必要なく、インターフェイスまたは抽象クラスを実装するオブジェクトをインスタンス化できます。リスナーは良い例です。すべてのリスナーが個別のクラスとして実装されているシステムをサポートするにはコストがかかりすぎるためです。

良いリファレンス: http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html (内部クラスのトピック)

于 2012-06-09T10:17:52.940 に答える