2015-07-02 2 views
3

Я написал класс, который реализует сопоставимый интерфейс. Я использовал аннотацию @NotNull, чтобы подавить waring в параметре метода. Но он все еще показывает предупреждение. IDE автоматически импортирует этот пакет com.sun.istack.internal.NotNull для @NotNull. Почему это так? Не используя эту аннотацию, как удалить это предупреждение?
Я использую Inteij Ultimate с java 8 SE. Вот мой фрагмент кода. enter image description hereПочему не @NotNull anotation удаляет предупреждение?

спасибо.

+1

Попробуйте добавить @Nonnull (javax.annotation.Nonnull) в метод 'compareTo'. –

+0

Правильно, 'javax.annotation.NonNull' является правильным. –

+1

@uraimo Я не вижу никакой аннотации, например 'NotNull' или' Nonnull' в пакете 'javax.annotation'. Когда я пытаюсь записать 'javax.annotation.NotNull' или' javax.annotation.Nonnull', тогда возникает ошибка. – seal

ответ

5

Судя по всему, вы должны использовать

public int compareTo(@NonNull Node node) { 

вместо

public int compareTo(@NotNull Node node) { 

компилятор может определить случаи, когда путь код может получить нулевое значение, без необходимости отладки NullPointerException.

От here.

Для этих аннотаций вам необходимо Checker Framework установлен. Или вы можете попробовать, что говорит другой ответ.

+1

Не вопрос андроида, даже если идеал находится в темном режиме :) –

+1

@uraimo whoops, im in the wrong tag! xD Я изменю его. –

+0

@uraimo Отредактированное определение/ссылка более уместна для OP :) –

1

Изменение вашего импорта, вы можете использовать собственные intellij com.intellij.annotations.NotNull, javax.annotation.Nonnull или javax.validation.constraints.NotNull.

Это функция IntelliJ, и на самом деле было возможно сконфигурировать эту аннотацию с нулевым/notnull, см. this guide.

Если это не исправить, и сообщение, похоже, подразумевает это, попробуйте удалить @override, вы добавляете аннотацию к параметру, который не имел его в суперклассе.

+1

В пакете 'javax.annotation' отсутствует аннотация' @ NotNull' или '@ Nonnull'. Я изменил конфигурацию в соответствии с вашей ссылкой, но мой ide до сих пор не может найти эти аннотации в этом пакете. – seal

+0

[У меня есть эти аннотации] (http://grepcode.com/snapshot/repo1.maven.org/maven2/org.glassfish/javax.annotation/3.1), кроме 'ManagedBean'. – seal

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