4 ответов:
понятно, что метод принимает нулевые значения, и что если вы переопределяете этот метод, вы также должны принимать нулевые значения.
Он также служит подсказкой для анализаторов кода, таких как FindBugs. Например, если такой метод разыменовывает свой аргумент, не проверяя сначала значение null, FindBugs выдаст предупреждение.
эта аннотация обычно используется для устранения
NullPointerExceptions.@Nullableчасто говорит, что этот параметр может бытьnull. Хороший пример такого поведения можно найти в Google Guice. В этой облегченной структуре внедрения зависимостей вы говорите, что эта зависимость может бытьnull. Если вы попытаетесь пройтиnullи без аннотации фреймворк отказался бы выполнять свою работу.что составляет более
@Nullableможет использоваться с@NotNullПримечание. Здесь вы можете найти некоторые советы, как правильно их использовать. Проверка кода в IntelliJ проверяет аннотации и помогает отлаживать код.
различные инструменты могут интерпретировать смысл
@Nullableпо-разному. Например,Checker Framework и FindBugs дескриптор@Nullableпо-разному.
элемент с аннотацией
@Nullableутверждения нулевое значение вполне допустимо для возврата (для методов), передачи (для параметров) и удержания (для локальных переменных и полей).элемент с аннотацией
@NotNullутверждения нулевое значение запрещено возвращать (для методов), передавать (для параметров) и удерживать (для локальных переменных и полей).существует ковариационно-контравариантная связь между
@Nullableи@NotNullпри переопределении / реализации методов с помощью аннотированное объявление или параметры.переопределение / реализация методов с аннотированным объявлением:
- The
@NotNullаннотация родительского метода требует@NotNullаннотация для метода дочернего класса.- методы
@Nullableаннотация в Родительском методе может иметь либо@Nullableили@NotNullаннотации в дочернем классе метод.переопределение / реализация методов с аннотациями параметры:
- The
@Nullableаннотация параметра в Родительском методе требуется@Nullableаннотация для метода дочернего класса параметр.- методы
@NotNullаннотация параметра в родительской метод может иметь либо@Nullableили@NotNullаннотации (или нет из них) для параметра метода дочернего класса.пример:
@Nullable public static UserContext getThreadUserContext() { TransactionParms tp = TransactionParms.getBoundParms(); return (tp == null) ? null : tp.getUserContext(); }здесь
getThreadUserContextметод должен возвращать экземплярTransactionParms. Но этот экземпляр может бытьNull
Comments