Как аннотировать массив NonNull?
Я использую org.eclipse.jdt.annotation.NonNull, чтобы добавить дополнительную информацию для статического нулевого анализа. Я не знаю, как правильно комментировать массивы:
- Как я могу сказать, что ссылка на массив не равна нулю?
- Как я могу сказать, что массив состоит из ненулевых элементов?
Я проверил:
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
- Как я могу сказать, что ссылка на массив не равна нулю?
Вы должны были поставить @NonNull
после объявления типа (но перед скобками массива), например,
public static void test(String @NonNull[] a) {
assert a != null;
}
- Как я могу сказать, что массив состоит из ненулевых элементов?
Ваш оригинальный вопрос имеет это.
РЕДАКТИРОВАТЬ: Для совместимости с Java 8, синтаксис должен был быть немного изменен (соответственно изменен код выше).