41

C# 拡張メソッド機能に相当する Java を探しています。今、私はJava 8のデフォルトメソッドについて読んでいますが、私が見る限り、これらはインターフェースにしか追加できません...

...インターフェイスを実装しない最終クラスの拡張メソッドを記述できる言語機能はありますか? (巻かなくてもいいのに…)

4

4 に答える 4

8

いくつかのトリックを使用して拡張メソッドを作成することは可能です。

Lombok または XTend を試してみてください。拡張メソッドはすぐに使用できる Java 実装には付属していませんが、Lombok と XTend の両方が完全に機能するソリューションを提供します。

Lombok は単純なスタンドアロンのコード処理フレームワークであり、拡張メソッドを含む、批判されている Java 固有の手間のほとんどを軽減します: https://projectlombok.org/features/experimental/ExtensionMethod.html

Xtend http://www.eclipse.org/xtend/は数光年先を行っており、Java と Java 型システムの上にある Scala などの現代言語の最良の部分を組み合わせた言語を実装しています。これにより、同じプロジェクト内で一部のクラスを Xtend に実装し、他のクラスを Java に実装できます。Xtend コードは有効な Java コードに準拠しているため、内部で JVM マジックが発生することはありません。一方、拡張メソッドのみが欠落している場合は、少し多すぎます。

JPropel https://github.com/nicholas22/jpropel-lightは、Lombok を使用して Java で LINQ スタイルの拡張メソッドを実装します。一見の価値があるかもしれません:)

于 2016-04-11T23:54:04.880 に答える