17

なぜJavaアノテーションがそれほど多く使用されているのかを知りたいです...たとえばjpaでxml構成を置き換えたことは知っていますが、なぜこの種の構成がまったく使用されるのですか? 次のコードを検討してください。

@Entity 
class Ent{
   // some fields
}
//... somewhere in the other file far far away
class NonEnt{
   // whatever here
}
さて、これを永続化コンテキストに入れようとすると、の永続化メソッドを使用して、インスタンスEntityManagerを永続化しようとすると実行時エラーが発生します(コンパイル エラーが発生する方がよいでしょう) 。NonEnt@Annotations を使用する代わりに、メソッドのないインターフェイスをエンティティに強制的に実装するという明らかな解決策があります。しかし、これはフレームワーク デザイナーの間では人気がありません。このソリューションの欠点は何ですか?
回答ありがとうございます...

4

5 に答える 5

11

マーカー インターフェイスと比較すると、注釈にはいくつかの利点があります。

  • それらはパラメータ化できます
  • それらはよりきめ細かく、クラスだけでなく、他のクラス要素 (フィールド、メソッド、メソッド引数など) にもアタッチできます。

注釈もおそらくあまり邪魔になりませんが、この点は好みの問題であり、議論の余地があります.

以下も参照してください。

于 2010-11-26T13:22:57.293 に答える
5

アノテーションの使用は、クライアントにインターフェイスの実装やクラスの拡張を強制するよりもはるかに侵襲的ではありません。

于 2010-11-26T13:22:17.790 に答える
3

私には明らかな解決策があります、

あなたが説明するものは「マーカーインターフェイス」と呼ばれ、インターフェイスの概念の乱用です。あなたがそれを明白だと考える唯一の理由はSerializable、その時点で注釈がなかったためにのみ存在するためだと思います。

@Annotations を使用する代わりに、メソッドのないインターフェイスをエンティティに強制的に実装します。しかし、これはフレームワーク デザイナーの間では人気がありません。このソリューションの欠点は何ですか?

その利点は何ですか?注釈には、パラメーターを設定できるという大きな利点があり、はるかにきめ細かくなります。マーカー インターフェイスは、クラス レベルでのみ機能します。

于 2010-11-26T13:26:06.217 に答える
3

Javaチュートリアルを引用:

注釈は、プログラム自体の一部ではないプログラムに関するデータを提供します。注釈を付けるコードの操作に直接影響はありません。

注釈には多くの用途があります。

  • コンパイラー向けの情報 — コンパイラーは注釈を使用して、エラーを検出したり、警告を抑制したりできます。
  • コンパイラ時および展開時の処理 — ソフトウェア ツールは注釈情報を処理して、コードや XML ファイルなどを生成できます。
  • 実行時処理 — 一部の注釈は、実行時に調べることができます。

ご覧のとおり、注釈は、インターフェイスを含む Java の型に関するメタデータを指定する方法であり、それらの代わりになるものではありません。

于 2010-11-26T13:31:05.710 に答える