2014-01-09 2 views
1

Я новичок в @Nonnull аннотация.@Nonnull аннотация - это только маркер?

Я пытался использовать его и написать следующий тест:

public class TestNonull{ 
    public static void doSmth(@Nonnull Integer integer){} 
    public static void main(final String[] arguments){ 
     doSmth(null); 
     doSmth(1); 
    } 
} 

Я не вижу ничего в консоли.

Нормально ли это?

+1

Да для Java они, но и для IDE и статический анализатор кода инструменты, такие как FindBugs они означают, что значение передается не должно быть пустым. –

+0

Также они помогут вам в хорошей документации о ваших методах, что метод 'doSmth' не ожидает, что ввод будет' null' –

+0

В моем случае мне нужно верить, что целое число! = Null внутри метода? код, который вызывает * doSmth *, должен передать значение метода valid (! = NULL)? – gstackoverflow

ответ

6

@Nonnull и @Nullable - это всего лишь маркеры для анализаторов IDE или кода. Компилятор javac не вставляет специальный код для методов, аннотированных таким образом.

+0

В моем случае мне нужно верить, что целое число! = Null внутри метода? код, который вызывает doSmth, должен передать значение метода valid (! = NULL)? – gstackoverflow

+1

, если вы хотите, чтобы исключение было выбрано раньше, вы можете использовать guavas [Preconditions.checkNotNull()] (http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/base/ Preconditions.html # checkNotNull (Т)). –

+0

Я знаю это. ответьте «да» или «нет» на мой вопрос – gstackoverflow

0

Это только аннотация для вашей среды IDE. Вы должны проверить, равен ли этот параметр нулю до вызова функции.

Как что:

String capitalize(@NonNull String in) { 
     return in.toUpperCase();    // no null check required 
    } 
    void caller(String s) { 
     if (s != null) 
      System.out.println(capitalize(s)); // preceding null check is required 
    } 

Check ->Using null annotations

Смежные вопросы