10

我正在使用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);为错误。

4

2 回答 2

12

如果您使用的是 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
于 2015-03-12T14:13:02.833 回答
4
  1. 我怎么能说数组引用是非空的?

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

public static void test(String @NonNull[] a) {
    assert a != null;
}
  1. 我怎么能说一个数组由非空元素组成?

你原来的问题就是这样。

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

于 2015-03-12T14:22:53.307 回答