如何注释数组 NonNull?

How to Annotate an Array NonNull?

我正在使用 org.eclipse.jdt.annotation.NonNull 为静态空值分析添加额外信息。我不知道如何正确注释数组:

  1. 我怎么能说数组引用是非空的?
  2. 我怎么能说数组由非空元素组成?

我测试过:

    public static void test(@NonNull String[] a) {
        assert a != null;
    }

    public static void main(String[] args) {
        test(null);
    }

但是,Eclipse 不会将 test(null); 标记为错误。

如果您使用的是 Java 8,它看起来如下:

@NonNull Object [] o1;

o1    = null;           // OK
o1    = new Object[1];
o1[0] = null;           // NOT OK

Object @NonNull[] o2;

o2    = null;           // NOT OK
o2    = new Object[1];
o2[0] = null;           // OK
  1. How can I say that an array reference is non-null?

你应该把@NonNull 放在类型声明之后(但是放在数组括号之前),例如,

public static void test(String @NonNull[] a) {
    assert a != null;
}
  1. How can I say that an array consists of non-null elements?

你原来的问题是这样的。

编辑:为了 Java 8 兼容性,必须稍微更改语法(相应地修改上面的代码)。