是否可以使用 Java 中的一组注释创建自定义注释?

Niu*_*ang 6 java spring annotations lombok spring-data-jpa

我在我的系统中使用 lombok 和 JPA。所以对于实体类,它们看起来都像:

@Getter
@Setter
@Entity
@NoArgsConstructor
@AllArgsConstructor
public class XxxEntity {
    ...
}
Run Code Online (Sandbox Code Playgroud)

所以我的问题是我可以创建一个自定义注释来对所有这些注释进行分组吗?

所以它可能看起来像:

@CustomAnnotation
public class XxxEntity {
    ...
}
Run Code Online (Sandbox Code Playgroud)

当我使用@CustomAnnotation 时,它会将上述所有注释应用于该类。

这可能吗?

谢谢。

maa*_*nus 6

不,这是不可能的。您可以使用新注释将注释集中在一起,但注释处理器无法理解它。Spring 的注释@Caching只是注释处理器已知的注释的一个示例。如果您通过复制创建自己的注释@Caching,我敢打赌您会发现它不起作用。

理论上,它可以作为注释处理器来工作,可以读取任何注释并查看内部。然而,完全不清楚应该如何处理未知的注释。里面放其他注释没有标准化的意义。

特别是,这对于 Lombok 不起作用。有一些问题要求这样做,例如,here,但它非常复杂。

最终的解决方案是注释预处理器理解复合注释并在普通注释处理器运行之前将其替换为其成分。但没有这样的事情,据我所知也没有计划。