12

クラスにアノテーションが付けられている場合、クラスを使用するには、そのアノテーションの定義をランタイムクラスパスに含める必要がありますか?たとえば、注釈が与えられます

import java.lang.annotation.ElementType;
import java.lang.annotation.Target;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Retention;
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Component {}

プログラムを実行できますか

@Component
public class Test {
    public static void main(String[] args) {
        System.out.println("It worked!");
    }
}

クラスパスにComponent.classがない場合は?(私のテストでは可能でしたが、この動作は仕様によって定義されていますか?)

ライブラリからの注釈を使用すると、そのライブラリへの依存関係が作成されるかどうかについて、矛盾する主張があるので、私は尋ねます。

4

2 に答える 2

6

実行時アノテーションは、実行時にアノテーション プロセッサによって処理されるメタ情報です。実行時にアノテーションへのアクセスがある場合は、必ずクラスパスにアノテーションを追加してください。たとえば、junit では、テスト メソッドを決定するクラス パス内の注釈が確実に必要です。

アノテーションの処理を行わない場合は、クラスパスにする必要はありません。

于 2012-04-05T17:27:28.510 に答える