一部のプログラミング言語には、クラスに「カテゴリ」を追加する機能があります (Objective-C など)。これは、サブクラス化せずに新しい機能をクラスに追加することを意味します。
本当に便利だと思いますが、Java でこの機能をシミュレートする方法が想像できません。
質問は次のとおりです。
Java でクラス カテゴリをシミュレートするためのエレガントなパターンはどのように見えるでしょうか? 私が本当に求めているのは、同じ方法で作るのではなく、同じ効果を達成することです。
一部のプログラミング言語には、クラスに「カテゴリ」を追加する機能があります (Objective-C など)。これは、サブクラス化せずに新しい機能をクラスに追加することを意味します。
本当に便利だと思いますが、Java でこの機能をシミュレートする方法が想像できません。
質問は次のとおりです。
Java でクラス カテゴリをシミュレートするためのエレガントなパターンはどのように見えるでしょうか? 私が本当に求めているのは、同じ方法で作るのではなく、同じ効果を達成することです。
interface
Java 8では、インターフェイスインジェクション(既存のクラスに新しいを追加する)とデフォルトメソッド(メソッドのデフォルト実装を提供する)の組み合わせを介してこれを行うことができるでしょうinterface
。
私は2つの方法を見ることができます。
動的プロキシを使用できます。この機能は、JVM が実行時にインターフェイスを「実装」し、「実際の」実装を呼び出すことができるコールバック メソッドを実装する機能を提供することを意味します。
もう 1 つの方法は、バイト コード エンジニアリングです。しかし、私見では最初の方法の方が簡単です。