5

これは、私が読んでいた匿名クラスに関するオラクルの記事からのものです。

匿名クラスは、2 つ以上のメソッドを含むインターフェイスを実装する必要がある場合に最適です。

2つ未満のメソッドを実装する必要がある場合は理想的ですが、具体的な名前付きクラスを作成する必要はありませんが、2つ以上実装する必要がある場合は、より読みにくくなります。

私の質問は、なぜ 2 つ以上のメソッドを持つ匿名クラスを実装するのが理想的なのですか?

4

3 に答える 3

7

あなたはその文を文脈から外しました。その直前の文を見てください。

EventHandler<ActionEvent>インターフェイスにはメソッドが 1 つしか含まれていないため、匿名クラス式の代わりにラムダ式を使用できます。詳細については、「ラムダ式」セクションを参照してください。

(私による強調)

将来的には、メソッドが 1 つだけの匿名クラスの代わりにラムダ式を使用できるようになるため、匿名クラスの使用は、インターフェイスに複数のメソッドがある場合にのみ意味があります。

多くのメソッドが含まれていると読みやすさが損なわれる可能性がありますが、特定の実装をコード内の 1 点でのみ使用できるようにする言語構造は他にありません。

于 2013-07-04T23:13:31.447 に答える
3

この記事には JDK 8 からの情報が含まれています。この場合、匿名クラスを使用する代わりに、Lambda 式を使用して単一の関数インターフェイスを実装できます。

したがって、2+ メソッドの提案は厳密に JDK 8 用です。7 以下の匿名クラスは、単一メソッドおよび複数メソッド インターフェイスの実装の唯一の方法 (完全なクラスの外側) です。

于 2013-07-04T23:12:46.213 に答える
1

これはおそらく、Java 8 で単一メソッド インターフェイス (つまりLambda Expressions )に使用できる新しい簡潔な構文 (指を交差させたもの) を考慮に入れているためです。インターフェイスに実際に単一のメソッドしかない場合は、匿名クラスよりも優れたオプションが提供されます。

于 2013-07-04T23:12:37.223 に答える