我怎么知道Java类的注释?

时间:2018-10-17 09:44:46

标签: java annotations lombok

我需要知道Java类的注释。我正在使用龙目岛。

示例为:

@Data
@Builder
public class JavaBean {}

我尝试了java.lang.annotation.Annotation []注记= JavaBean.class.getAnnotations,但是它不显示数据和生成器。

3 个答案:

答案 0 :(得分:3)

我认为您无法在JavaBean.class.getAnnotations中看到批注,因为@Retention等于SOURCE。

在运行时不需要这种注释。

有关更多详细信息:Annotation SOURCE Retention Policy

祝你有美好的一天。

答案 1 :(得分:2)

答案来自这些注释:

@Target({TYPE, METHOD, CONSTRUCTOR})
@Retention(SOURCE)
public @interface Builder {
.....

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.SOURCE)
public @interface Data {
.....

您获取批注的代码是正确的,但是@Retention(RetentionPolicy.SOURCE)在这里发挥了作用。

Java通过java.lang.annotation.RetentionPolicy枚举定义了3种保留策略。它具有SOURCECLASSRUNTIME

1)具有保留策略SOURCE的注释将仅与源代码一起保留,并在编译时丢弃。

2)具有保留策略CLASS的注释将一直保留到编译代码为止,并在运行时被丢弃。

3)带有保留策略RUNTIME的注释将在运行时提供给JVM。

@Data@Builder@Retention(SOURCE)标记,这意味着这些注释在您的类在运行时不存在,因此您无法获得这些注释。

答案 2 :(得分:1)

Lombok批注在实际编译之前已进行了预处理,因此编译后的类不包含它们作为批注,而是包含已生成的代码。