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

Jin*_*won 1 java annotations

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

public @interface MyAnnotation {
    String[] names() default "";
}
Run Code Online (Sandbox Code Playgroud)

它等于

String[] names() default new String[0];
Run Code Online (Sandbox Code Playgroud)

Kon*_*kov 7

public @interface MyAnnotation {
    String[] names() default "";
}
Run Code Online (Sandbox Code Playgroud)

意味着默认情况下names将是一个空String("")的数组.

这与使用array-initializer时相同:

public @interface MyAnnotation {
    String[] names() default { "" };
}
Run Code Online (Sandbox Code Playgroud)

此外,String[] names() default new String[0];不编译,因为annotation属性的(默认)值必须是常量表达式.

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