如何注释数组NonNull?

时间:2015-03-12 14:03:06

标签: java eclipse non-nullable

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

  1. 我怎么能说数组引用是非空的?
  2. 怎么说数组由非空元素组成?
  3. 我测试过了:

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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:4)

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

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

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

你原来的问题就是这样。

编辑:对于Java 8兼容性,语法必须稍微更改一下(相应地修改代码)。