Java 在省略号之前键入注释
我在中看到,在省略号之前可以有注释:Java 在省略号之前键入注释,java,annotations,type-annotation,Java,Annotations,Type Annotation,我在中看到,在省略号之前可以有注释: class X { void method(String @Annotation ... x) {} } 我的问题很简单:这意味着什么 特别是,与以下内容的区别是什么: class X { void method(@Annotation String ... x) {} } 注释可能出现在中的语法位置 一种程序,它可以合理地应用于声明或类型, 或者两者兼而有之 及 注释是应用于声明还是应用于 声明的实体-因此,注释是否为声明 注释或类型
class X {
void method(String @Annotation ... x) {}
}
我的问题很简单:这意味着什么
特别是,与以下内容的区别是什么:
class X {
void method(@Annotation String ... x) {}
}
注释可能出现在中的语法位置
一种程序,它可以合理地应用于声明或类型,
或者两者兼而有之
及
注释是应用于声明还是应用于
声明的实体-因此,注释是否为声明
注释或类型注释-取决于
批注的类型:[……]
因此,中的注释
void method(String @Annotation ... x) {}
是一个注释
以及中的注释
void method(@Annotation String ... x) {}
既是一种类型,又是一种注释
您可以验证这一点
@Target(value = ElementType.TYPE_USE)
@interface Annot {}
public static void method(String @Annot... arg) {}
public static void method2(@Annot String... arg) {}
及
注释可能出现在中的语法位置
一种程序,它可以合理地应用于声明或类型,
或者两者兼而有之
及
注释是应用于声明还是应用于
声明的实体-因此,注释是否为声明
注释或类型注释-取决于
批注的类型:[……]
因此,中的注释
void method(String @Annotation ... x) {}
是一个注释
以及中的注释
void method(@Annotation String ... x) {}
既是一种类型,又是一种注释
您可以验证这一点
@Target(value = ElementType.TYPE_USE)
@interface Annot {}
public static void method(String @Annot... arg) {}
public static void method2(@Annot String... arg) {}
及
编写varargs形式参数时,例如
void method(String... x) {}
然后Java编译器生成一个接受字符串数组的方法;每当源代码使用多个参数调用该方法时,Java编译器都会在调用该方法之前将它们打包到一个数组中。因此,将像String…
这样的声明视为类似于String[]
。此外,注释的解释是相同的
这些注释中的任何一个
void method(String @NonEmpty ... x) {}
void method(String @NonEmpty [] x) {}
void method(@English String ... x) {}
void method(@English String [] x) {}
应用于数组:类型表示字符串的非空数组。注释说明数组或vararg列表不应为空。您可以使用注释处理器在编译时或运行时强制执行此操作
这些注释中的任何一个
void method(String @NonEmpty ... x) {}
void method(String @NonEmpty [] x) {}
void method(@English String ... x) {}
void method(@English String [] x) {}
应用于元素类型。注释记录了该方法采用英文字符串数组的情况。当您编写varargs形式参数时,例如
void method(String... x) {}
然后Java编译器生成一个接受字符串数组的方法;每当源代码使用多个参数调用该方法时,Java编译器都会在调用该方法之前将它们打包到一个数组中。因此,将像String…
这样的声明视为类似于String[]
。此外,注释的解释是相同的
这些注释中的任何一个
void method(String @NonEmpty ... x) {}
void method(String @NonEmpty [] x) {}
void method(@English String ... x) {}
void method(@English String [] x) {}
应用于数组:类型表示字符串的非空数组。注释说明数组或vararg列表不应为空。您可以使用注释处理器在编译时或运行时强制执行此操作
这些注释中的任何一个
void method(String @NonEmpty ... x) {}
void method(String @NonEmpty [] x) {}
void method(@English String ... x) {}
void method(@English String [] x) {}
应用于元素类型。注释文档表明该方法采用了一个英文字符串数组。啊,是的,我不知何故认为注释不能应用于数组,但它们当然可以。啊,是的,我不知何故认为注释不能应用于数组,但它们当然可以。