java - 可空元素的二维非空数组

标签 java java-8 annotations nullable type-annotation

在 Java 8 中,我应该在哪里放置 @Nullable/@NonNull 类型注释以声明二维非 null 可空元素数组?

当声明一个类型时(如在方法签名中),两者都是

@Nullable Object @NonNull[][]

@Nullable Object @NonNull[]@NonNull[]

在句法上是有效的。

同样,当定义一个值(零长度数组)时,我可以使用其中之一

new @Nullable Object @NonNull[0][]

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

哪个版本是正确的?

最佳答案

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

您将类型注释紧接在相应类型之前。

这是来自 type annotations specification 的示例:

@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

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

  • @Nullable Object @NonNull[][] 表示“(未指定的)可空元素数组的非空数组”
  • @Nullable Object @NonNull[]@NonNull[] 表示“可空元素的非空数组的非空数组”

您更喜欢其中哪一个取决于您的规范。仅“可空 元素的二维非null 数组”无法提供足够的信息来了解您指的是哪一个,但很可能是第二个。

(这个问题在 Type annotations FAQ .)

关于java - 可空元素的二维非空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45056994/

相关文章:

java - 如何在 Eclipse 的库文件夹中组织 jar 文件?

java - 获取在后台运行的 Java 运行时进程

java - 在 Windows 7 平板电脑中执行时,我的 GUI 看起来很奇怪

java - 多个图像到一个字节数组?字节数组的数组?

java - Spring Boot - @Value 注释不起作用

java - Hibernate一对多映射(注解)

java - Android 处理 GIF 文件

java - Java 8 java.util.Base64 是 sun.misc.BASE64 的替代品吗?

java - 我无法在 JavaFX 中更改 ScrollPane 的 Angular 颜色

java - 持有其他注释的注释成员?