Java 可空元素的二维非空数组

Java 可空元素的二维非空数组,java,java-8,annotations,nullable,type-annotation,Java,Java 8,Annotations,Nullable,Type Annotation,在Java8中,为了声明可空元素的二维非空数组,我应该将@Nullable/@NonNull类型注释放在哪里 在声明类型时(如在方法签名中),两个 @Nullable Object@NonNull[] 及 @Nullable Object@NonNull[]@NonNull[] 在语法上是有效的 同样,在定义值(零长度数组)时,我可以使用 new@Nullable对象@NonNull[0][] 或 new@Nullable Object@NonNull[0]@NonNull[] 哪个版本

在Java8中,为了声明可空元素的二维非空数组,我应该将
@Nullable
/
@NonNull
类型注释放在哪里

在声明类型时(如在方法签名中),两个

@Nullable Object@NonNull[]

@Nullable Object@NonNull[]@NonNull[]
在语法上是有效的

同样,在定义值(零长度数组)时,我可以使用

new@Nullable对象@NonNull[0][]

new@Nullable Object@NonNull[0]@NonNull[]

哪个版本正确?

读取数组类型时,从括号开始向前读取,然后最后读取元素类型。例如,
Object[][]
发音为“array of array of Object”。 这有助于理解第一对括号表示最外层的数组,下一对括号表示作为最外层数组元素的所有数组

将类型注释放在对应类型的前面

以下是来自以下方面的示例:

因此,我们可以理解您的示例:

  • @Nullable Object@NonNull[][]
    表示“可空元素(未指定)数组的非空数组”
  • @Nullable Object@NonNull[]@NonNull[]
    表示“可空元素的非空数组的非空数组”
您喜欢哪一种取决于您的规格。仅仅“二维非空元素数组”并不能提供足够的信息来知道您所指的是哪一个元素,但它很可能是第二个元素

(这一问题在报告中也有回答。)

在中查看或查看“应用类型注释”时,可以查找或强制测试它。
@Readonly Document [][] docs1 = new @Readonly Document [2][12]; // array of arrays of read-only documents
Document @Readonly [][] docs2 = new Document @Readonly [2][12]; // read-only array of arrays of documents
Document[] @Readonly [] docs3 = new Document[2] @Readonly [12]; // array of read-only arrays of documents