用注释标记数组的不同维度

Mark separate dimensions of an Array with Annotations

在Java8中我们可以用注释标记数组的不同维度 (参见 JLS 8 中的第 10.2 节)。 例如,

int @a[] a;

int @a[] @b[] a;

void someMethod(int @a[] @b... y) {}

然后我们可以用Java反射解析这样的声明来实现一些特定的逻辑。

您知道此功能在实际 Java 框架或 Java 库中的任何实际应用吗?

Checker Framework 是此类注释放置可能有用的示例。

它可以用于创建 mutable/immutable 或(非)可空行 - 基本上任何您可能想要注释整个数组的内容,但仅限于一行。

Object @NonNull [] @Nullable [] a;

除此之外,它还可以用于文档,例如解释每个维度用途的注释。