Я бы хотел сказать IntelliJ, что по умолчанию все не должно быть нулевым, если только явно не указано @Nullable
.
Используя библиотеку JSR305 и приведенный ниже код, мы можем частично выполнить это.
import javax.annotation.Nonnull;
import javax.annotation.meta.TypeQualifierDefault;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Nonnull
@TypeQualifierDefault({ElementType.FIELD, ElementType.LOCAL_VARIABLE, ElementType.METHOD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@interface NonnullByDefault {
}
(см. Также: https://www.jetbrains.com/help/idea/parametersarenonnullbydefault-annotation.html)
Однако, в настоящее время @Nonnull
из JSR305 не поддерживается TYPE_USE
и TYPE_PARAMETERS
, что не допускает объявлений вроде var list = new ArrayList<@Nonnull String>();
. Это выдает ошибку: '@ Nonnull' не применимо к использованию типа .
Таким образом, приведенная выше аннотация @NonnullByDefault
не работает для использования типа и параметров типа, даже если я включаю их в TypeQualifierDefault. Есть ли способ сделать их ненулевыми без явных аннотаций?