Java アノテーションがどのように機能するかを調べて、それがクラスのメタデータであることを認識しています。カスタム アノテーションに関していくつか質問がありました。
アノテーションは、静的またはグローバル クラス変数よりもどのように役立つのでしょうか?
注釈が役立つ実際の例を教えてください。
Java アノテーションがどのように機能するかを調べて、それがクラスのメタデータであることを認識しています。カスタム アノテーションに関していくつか質問がありました。
アノテーションは、静的またはグローバル クラス変数よりもどのように役立つのでしょうか?
注釈が役立つ実際の例を教えてください。
1)「注釈」、「静的変数」、または「グローバル変数」の間に共通点はまったくないと思います-それはリンゴ、オレンジ、キンカンです。
2) 「注釈」の良い例は、JAXWS Web サービスです。
この場合、JAXWS 対応ツールは「@WebService」クラスと「@WebMethod」メソッドを認識して、Java コードを解析し、そこから適切なプロキシ、スタブ、WSDL などを自動生成できます。
3)「注釈」の良い紹介は次のとおりです。
* http://www.developer.com/java/other/article.php/3556176/An-Introduction-to-Java-Annotations.htm
[注釈ベースの開発] では、ツールがソース コードの注釈から定型コードを生成できるようにすることで、多くの状況でボイラープレート コードを作成する必要がなくなります。これは、プログラマーが何をすべきかを言い、ツールがそれを実行するためのコードを発行する宣言型プログラミング スタイルにつながります。」
グローバル変数をクラス要素 (コンストラクター、フィールド、メソッドなど) にバインドし、それらをリフレクションでクエリすることはできません。それが1つの違いです。また、注釈にはさまざまな程度の保持があります。それらは、ツールによって「処理」されるとバイトコードから取り除かれるか、実行時に保持されてリフレクションで使用できるようになります。
注釈の前は、javadoc コメントから Java ソースのメタ情報をバインドする xdoclet などのツールを使用していました。これらのメタ情報は、周囲のコードを生成するために処理されました (つまり、EJB で永続化するため、または構成ファイルやその他のソースを生成するため)。
注釈は基本的にメタデータです。つまり、注釈はクラス、メソッド、またはパラメータについて何かを伝えますが、注釈を付けるコードの一部ではありません。クラス変数はコード自体の一部を形成し、アプリケーションで使用するデータを格納するという、まったく異なる、しかし同様に重要な目的を果たします。
有用な例の 1 つは@Override
、スーパークラスにメソッドが既に存在することをコンパイラに伝える注釈です。この注釈は、メソッドとその引数が正しいことを確認するコンパイル時のチェックを提供します。
アスペクト指向プログラミング (AOP)を実現するために注釈を使用できます。Method Interceptorsについて読んでみてください: http://docs.jboss.org/aop/1.3/aspect-framework/examples/method-execution/methodexecution.htmlとhttp://code.google.com/p/google -guice/wiki/AOP .
多くの場合、注釈を利用してオブジェクトを他のコンポーネントにマッピングするのに役立つ多くのツールがあります。ORM は、DB 内の各フィールドをオブジェクトなどにマップしますか?
How are annotations any more useful then a static or global class variable?
そもそも彼らは悪ではない。
アノテーションは、静的またはグローバル クラス変数よりもどのように役立つのでしょうか?
http://en.wikipedia.org/wiki/Java_annotations#Processingから:
Java ソース コードがコンパイルされると、注釈プロセッサと呼ばれるコンパイラ プラグインによって注釈を処理できます。プロセッサは、情報メッセージを生成したり、追加の Java ソース ファイルまたはリソースを作成したりして、コンパイルおよび処理したり、注釈付きコード自体を変更したりできます。アノテーションの RetentionPolicy が CLASS または RUNTIME である場合、Java コンパイラは条件付きでアノテーション メタデータをクラス ファイルに格納します。後で、JVM または他のプログラムは、メタデータを検索して、プログラム要素と対話する方法や動作を変更する方法を決定できます。