1

C#やObjective Cなどの一部の言語では、クラス拡張を作成できます。つまり、既存のクラスを拡張しなくても、そのクラスにメソッドを追加できます。これはJavaで可能ですか?

4

5 に答える 5

8

オリが言うように、それは不可能です。

C#の拡張メソッドは、静的メソッドを呼び出すための優れた方法であるため、次のようになりますが、言及する価値があります。

someobject.MyExtensionMethod();

次に、コンパイラはそれをに変換します

SomeStaticClass.MyExtensionMethod(someobject);

オブジェクトにメソッドを実際に追加しているわけではありません

于 2011-12-11T18:46:46.910 に答える
3

いいえ、標準のJavaではありません。

于 2011-12-11T18:44:53.163 に答える
1

コンパイル時のウィービングを使用しているAspectJを使用して、バイトコードに追加できます。

于 2011-12-11T18:49:16.640 に答える
1

私はそれを可能にする言語構造を知りませんが、デコレータパターンを使用して目標を達成することができます。

于 2011-12-11T18:49:18.683 に答える
0

これは、lombokライブラリで可能です。@ExtensionMethodと呼ばれるアノテーションがあります。

これにより、その機能が提供されます。

https://projectlombok.org/features/experimental/ExtensionMethod.htmlを参照してください

于 2015-05-26T14:54:01.037 に答える