如何注释数组NonNull?

Ver*_*tex 5 java eclipse non-nullable

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

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

我测试过:

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

    public static void main(String[] args) {
        test(null);
    }
Run Code Online (Sandbox Code Playgroud)

但是,Eclipse没有标记test(null);为错误.

Ren*_*ler 9

如果您使用的是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
Run Code Online (Sandbox Code Playgroud)


Kri*_*kar 5

  1. 我怎么能说数组引用非空呢?

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

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

你原来的问题就是这样。

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