注释声明中String []的默认值是什么?

时间:2015-12-18 16:06:11

标签: java annotations

default ""部分在以下代码中的含义是什么?

public @interface MyAnnotation {
    String[] names() default "";
}

是否等于

String[] names() default new String[0];

2 个答案:

答案 0 :(得分:7)

public @interface MyAnnotation {
    String[] names() default "";
}

表示默认情况下names将是一个空String"")的数组。

这与您使用数组初始值设定项相同:

public @interface MyAnnotation {
    String[] names() default { "" };
}

此外,String[] names() default new String[0];无法编译,因为注释属性的(默认)值必须是常量表达式。

作为家庭作业,您可以使用MyAnnotation注释某些内容并使用反射来探索其属性。

答案 1 :(得分:3)

它相当于一个由空字符串组成的单个元素的数组。来自Java语言规范section 9.7.1 on annotations

  

如果元素类型是数组类型,则不需要使用花括号来指定元素值对的元素值。 如果元素值不是 ElementValueArrayInitializer ,则其唯一元素为元素值的数组值与元素关联。如果元素值为 ElementValueArrayInitializer ,然后由 ElementValueArrayInitializer 表示的数组值与元素相关联。