是否需要运行时类路径中的注释类文件?

mer*_*ike 9 java annotations

如果使用注释对类进行批注,那么该批注的定义是否必须位于运行时类路径中才能使用该类?例如,给出注释

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 {}
Run Code Online (Sandbox Code Playgroud)

我可以执行该程序吗?

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

没有在类路径中的Component.class?(在我的测试中,我可以,但这个行为是由规范定义的吗?)

我问,因为使用库中的注释是否会创建对该库的依赖性存在冲突.

Jay*_*yan 6

运行时注解是注解处理器在运行时处理的元信息。如果在运行时可以访问注释,那么您肯定会在类路径中添加注释。例如junit肯定需要类路径中的注释来确定测试方法。

如果没有对注解进行处理,则不需要将其放在类路径中。