2

私の知る限り、注釈を有効にする唯一の方法はリフレクションです。リフレクションがなければ、Java アノテーションは役に立たなくなります。これは正しいですか?

public class Main{
    @SomeAnnotation(name="some",value="annotation")
    public void method(){
        //do something.
    }
    public static void main(String...args){
        Main main = new Main();
        //Just call the method directly, How to make the @SomeAnnotation make sense?
        main.method();
    }
}

たとえば、最初に Java Method オブジェクトを取得してから、提示されたすべての注釈をチェックします。必要なものが得られたら、リフレクションによってメソッドを呼び出します。例えば。

Method.invoke(Object, Object...args) 

注釈は面倒な XML を減らすことができると言われていますが、XML 構成に戻ると、XML ファイルを読み込んで解析するような使用パターンがあり、何らかのメソッドを呼び出すと、最初に構成情報を取得または確認してから、実際の作業を行います。注釈によってこれを達成する方法は? 私たちが得た唯一の方法は反射ですか?

4

1 に答える 1

3

アノテーションのRetentionPolicy(それ自体がメタアノテーションとして宣言されている)は、アノテーションがリフレクションによって使用されるだけでなく、コンパイル時またはビルド時に(アノテーション処理ツールのように)使用されることを示しています。

アノテーション処理を理解するためのサンプルコードが必要な場合は、アノテーションドキュメントの最後にあります(別のテストクラスを検査する小さなプログラムを使用)。

于 2012-07-17T04:51:05.187 に答える