0

重複の可能性:
これらの Java アノテーションはどのような機能を果たしますか?
アノテーションは Java でどのように、どこで使用されますか?

さて、私は注釈が何であるかを理解しようとしています.たくさんのドキュメントを読んでいますが、まだそれらが何をし、どのように使用するかを理解していません...まあ、私はこのサンプル注釈の説明を持っています:

    @Documented
@interface ClassPreamble {
   String author();
   int currentRevision() default 1;
   String lastModified() default "N/A";
   String lastModifiedBy() default "N/A";
}

そして、私はそれを使おうとしていますが、何を期待すべきかさえわかりません、笑:

   @ClassPreamble (author = "James")
public class PreAmbleReal {
    static public void main(String[] args) {




    }

    public String author();

}

それで、誰か私にこれを説明できますか?そうでなければ、私は数時間を無駄にし、何も学ばないでしょう。:/

4

2 に答える 2

1

注釈の用途の 1 つは、コンパイラに特定のものをチェックするように指示することです。たとえば、@Override は、関数が実際に基本クラスと同じであることを確認します。@Author のような他のアノテーションもあります。このページにアクセスしたことがあると思いますが、これはより詳細な説明です - http://docs.oracle.com/javase/1.5.0/docs/guide/language/annotations.html

于 2012-06-04T01:04:12.067 に答える
1

注釈はそれ自体では何もしません。それらは、他のコード構造体 (メソッド、クラス、引数など) に配置される属性です。注釈を読み取って何かを行うには、他のプロセッサが必要です。

一部の注釈はソース コード内にあり、コンパイルされたコードには配置されないため、ソース コードを処理するツールはそれらを読み取って処理します。一部の注釈はコンパイルされたコードに配置されますが、クラス ローダーによってロードされません。コンパイルされたコードであり、クラス ローダーによって読み込まれるため、実行時に読み取ることができます (これら 3 つの動作は@Retention、注釈自体の注釈によって区別されます)。

Java言語仕様で私が知る限り、実行時に注釈クラスがなくてもアプリケーションの動作が停止しないと述べられています。これは、クラスローダーがそれらを無視することを意味します。しかし、それらを使用するプロセッサまたはフレームワークがエラーを発生させる可能性があります(これは彼らがすべきことです)。

于 2012-06-04T01:10:58.840 に答える