default ""
部分在以下代码中的含义是什么?
public @interface MyAnnotation {
String[] names() default "";
}
是否等于
String[] names() default new String[0];
答案 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 表示的数组值与元素相关联。