java - 将数组传递给注释的语法

标签 java arrays annotations arguments argument-passing

几天前,我被迫在我的类声明中使用以下结构:

@Table(name="UserPattern",  uniqueConstraints={
   @UniqueConstraint(columnNames={"user_id", "patern_id"})
})

我对这种语法感到非常惊讶。

通常我认为如果我应该将数组传递给注释 O 我应该编写以下内容:

declared_inside_annotation_name={value1,value2...}

但在本例中,它看起来如下所示:

uniqueConstraints={
                    @UniqueConstraint(columnNames={"user_id", "patern_id"})
                  }

@Table注释声明:

@Target(TYPE)
@Retention(RUNTIME)
public @interface Table {

    String name() default "";


    String catalog() default "";


    String schema() default "";


    UniqueConstraint[] uniqueConstraints() default { };


    Index[] indexes() default {};
}

请澄清此语法。

最佳答案

您的 declared_inside_annotation_name 示例中的预期语法与 @Table 注释中的语法实际上并不冲突。注释的数组属性的元素类型不一定必须是字符串(这可能是您所期望的)。它实际上可能是另一个注释。

@Table 注释的 uniqueConstraints 属性就是这种情况。如果您检查 UniqueConstraint 类的声明,您会发现它本身就是一个注释。写下来时,您可以使用常用的 @AnnotationTypeName 表示法。

关于java - 将数组传递给注释的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24754451/

相关文章:

arrays - 将大数组拆分为两个数组

java - 如何在不添加任何代码的情况下使类可配置?

java - 如何检查 List<E> 是否满足另一个 List<E> 的要求

Java:没有默认构造函数的类的newInstance

java - java真的支持矩形数组吗?如果不是,java 中调用的非锯齿状数组是什么?

java - TabbedPane 更改选项卡内的面板

javascript - 用于照明的二维阵列中的圆形效果

java - 写 "compressed"数组提高IO性能?

java - 无效的线路定义 XML

java - 来自 PostMan 的 POST 日期 application/json 时无法解析的日期