2017-08-18 6 views
2

少し見てきましたが、Javaアノテーションの仕組みの一部を理解できません。Javaアノテーションの理解

これまで見たことのあるすべての例では、注釈を作成してから、リフレクションを使用してプロジェクトのクラスを実行する主な方法があります。それで、彼らはそれを使って基本的にアノテーションを動作させます。

しかし、ジャンパー、guice、hibernateなどの別のプロジェクトに含めることができるjarファイルに注釈プロジェクトを作成したい場合は、これがどのように機能するのか理解できません。この場合、そうですか?

私は、プロジェクトに含めることができるjarファイルとして注釈を作成する方法についていくつかのチュートリアルを探しましたが、まだ何も見つかりませんでした。理想的には、私は春や遊びなどのWebフレームワークの中でそれを使用できるようにしたいと考えています。

答えて

2

考えてみたい主なアノテーションには、主に2種類あります。最初の種類はランタイムアノテーションです。 Jacksonの例は@JsonIgnoreです。

class Test { 
    @JsonIgnore private int num; 
    private String str; 
} 

ユーザーは自分のコードからライブラリのコードにTestを通過するとき、あなたは注釈を検査し、あなたの魔法を行うためにgetClass()を使用しています。すなわち、ユーザは、あなたがどこかにdoSomething()内部に注釈を超えるsomething.getClass()とループを

MyLibrary.doSomething(something) 

呼び出すないとき、あります。

その他の種類は、注釈プロセッサによって処理されるコンパイル時の注釈です。例では、プロジェクトロンボクから@Getterを次のようになります。ユーザーが(実際にコンパイルを行い、右javac前)javac起動し、あなたのライブラリJARがある場合

class Test { 
    @Getter private final String name; 
} 

注釈プロセッサは、これが行われ

class Test { 
    private final String name; 
    public String getName() { return name; } 
} 

に変換しますクラスパス上にある。 Examples

関連する問題