java - 如何将多个注释合并为一个注释?

标签 java spring annotations

我有两个来自框架的注释。我经常在同一个字段中使用这两个注释。因此,我正在尝试创建一个包含这两者的“组合”注释。

但我完全不知道这是否可能:

现有注释(我无法控制):

@Target({ElementType.PARAMETER, ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface ApiParam {
    String name() default "";
}

@Target({ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface ApiModelProperty {
    String name() default "";
}

我正在尝试创建的自定义注释:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
@ApiParam
@ApiModelProperty
public @interface SwaggerParam {
     String name() default "";
}

结果:注释不适用于注释类型

问题:有机会吗?

最佳答案

很遗憾,您不能这样做,因为无法扩展注释。

Is there something like Annotation Inheritance in java?

当我第一次回答这个问题时,我最初对 Spring 框架解决这个缺点的方法感到困惑,他们使用元级注释(例如 @Component 作为 @Controller/@Configuration 等的元注释)作为一种变通方法。

参见:https://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/beans.html#beans-annotation-config

关于java - 如何将多个注释合并为一个注释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47175378/

相关文章:

Java 解析器 XML 示例

java - Hibernate 事务的 session 问题

spring - 如何将命令行参数获取到 Spring Batch 作业中

java - 使用 JaxB 解码时出现问题

java - 如何在 super(...) 中创建数组列表

java - 使用变量的值而不是它的名称来声明新变量

java - LookAndFeel 行为之间的区别

java - 在 springdoc-openapi-ui 中启用“授权”按钮以进行不记名 token 身份验证 (JWT)

objective-c - 处理注释不当的 Objective-C 方法?

objective-c - 重置标题/副标题后如何调整标注气泡的大小