Как аннотировать массив 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); как неправильно.

2 ответа

Решение

Если вы используете 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. Как я могу сказать, что ссылка на массив не равна нулю?

Вы должны были поставить @NonNull после объявления типа (но перед скобками массива), например,

public static void test(String @NonNull[] a) {
    assert a != null;
}
  1. Как я могу сказать, что массив состоит из ненулевых элементов?

Ваш оригинальный вопрос имеет это.

РЕДАКТИРОВАТЬ: Для совместимости с Java 8, синтаксис должен был быть немного изменен (соответственно изменен код выше).

Другие вопросы по тегам