根据我的理解,
Annotation
是元数据。它将在编译时或运行时完成其工作。
考虑一下注释
@Override
,它确保方法是在超类/接口中定义的,并且我将重写它。如果不是,编译器会抛出错误。这里的问题是,关于此检查的实际业务逻辑写在哪里。 这里我假设,它应该用 javac
编译器编写,因为此注释是 java.base
模块的一部分。
但是像
@PostConstruct
(来自 javax.annotation)和 @Getter
(来自 lombok)这样的注释呢?这些是作为 jar 依赖项添加的注释。我正在搜索它的实现但没有找到。
就像 @PostConstruct
逻辑如何调用一样。 @Getter
如何调用并创建字段的 getter 方法并嵌入到 .class
文件中。
那么我在哪里可以找到驱动注释行为的底层机制。
没有单一的底层机制来驱动注释的行为。
@Target
、@Retention
、@Inherited
、@Override
、@SuppressWarnings
、@Deprecated
、@SafeVarargs
、@Repeatable
和 @FunctionalInterface
另请参阅: