2011-11-07 20 views
3

私はクラスにアノテーションを追加できない状況がありますが、編集できない何らかの種類のメタデータをBean(コード)に追加する方法はありますが、リファクタリングでは何が残っていますか? Beanを拡張して、そのクラスにアノテーションを追加するとどうなりますか?注釈の代わりに?

+0

メタデータの使い方を明確にすることはできますか? –

答えて

2

古い方法では、マーカーインターフェイス(SerializableCloneableのようなメソッドのないインターフェイス)を使用します。

+1

マーカーインターフェイスが邪悪です! – Guillaume

+1

私は、アノテーションをクラスに追加できない場合、そのクラスはマーカーインタフェースを実装することはできないと考えています。 –

+0

@Guillaume確かに彼は尋ねました;) –

1

IDEに応じて、プロパティやXMLなどのテキストファイル内のクラスまたはメソッドまたはフィールドを参照するだけで済みます。 IDEはこれらを見つけ、クラス/メソッド/フィールドの名前を変更すると、テキストの検索/置換を実行するように指定します。 (いくつかのリファクタリングは、このような別のクラスにメソッドを移動するので、うまく動作しませんが)

1

あなたはそれはあなたが外部から自分のクラスを編集することなく、特定のメソッドにビヘイビアを追加することができますAOP http://static.springsource.org/spring/docs/2.5.x/reference/aop.html

検討することができます。余分なコードは、メソッドの前後、前後にすることができます。

あなたが達成したいことを正確に伝えることなく、必要なものを推測するのは難しいです。

+0

良いアイデアですが、他のコードのメタデータとしてAOPによって提供された情報をどのように使用できますか? (申し訳ありませんが、私は他の回答で私のコメントを削除しましたが、私はあなたの返事を見ませんでした) –

+0

私は質問があいまいであると言ったように私はよく分かりません。基本的に注釈(缶)が提供するものである、それを変更せずにクラスに振る舞いを加える可能性のある解決策として、私は驚くばかりです。メタデータとは、さまざまな意味があります。 – Guillaume

0

他のコードから使用するにはメタデータが必要ですか、それとも人間にとっては読みやすいはずですか?

あなたのクラス(Javassistの、いくつかのAOPなど)に任意のデータを追加するために、コード計測を使用することができます

0

あなたはメタデータと並行してクラス階層を追加することができます。例えば、BeanInfoのようなクラスは、Java Beanのメタデータを提供します。

0

コードを変更できない場合は、クラスをキーとしてグローバルデータマップにメタデータを配置できます。

関連する問題