Java:@NonNull for int?

时间:2015-07-09 23:39:25

标签: java annotations

我正在为原始数据类型寻找@NonNull等效的Java注释。我知道原始数据不能是null,但我无法找到替代方案。

我想要实现的目标在逻辑上等同于:

int mPageNumber;

public void updatePage(@NonNull final Integer nonNull) {
    mPageNumber = nonNull.intValue();
}

我试过了:

int mPageNumber;

public void updatePage(@NonNull final int nonNull) {
    mPageNumber = nonNull;
}

我得到以下lint警告:

  

原始类型成员无法注释。这次检查报告   与@Nullable和@NotNull注释用法相关的问题   在恒定条件下配置&例外检查。

我可以在上面的@NonNull方法中代替IntegerupdatePage,以便我可以int作为参数,而不是Integer

2 个答案:

答案 0 :(得分:0)

我认为您应该将mPageNumber类型更改为Integer。因为int类型不能为null,而是Integer。

答案 1 :(得分:0)

正如其他人指出的那样,int 本身不需要注释。

但是,您可能希望控制集合(包括数组)允许空值的位置。原始数组可以在方括号上加注解,因为数组本身是一个引用类型并且可以为空。

这里有一些例子。请注意,List 更具可读性。您还可以注释 Map 的内容,例如不想要空键。

int noPossibleNullValue = 42;
// int noPossibleNullValue = null; // error
@NotNull Integer prohibitByAnnotation = 42;
prohibitByAnnotation = null; // warning
int @NotNull [] arrayOfInts = {1, 2, 3};
// arrayOfInts = {1, 2, null}; // error
arrayOfInts = null; // warning
int @NotNull [] @Nullable [] arrayOfArraysOfInts = {null, {3, 4, 5}};
arrayOfArraysOfInts = null; // warning
@Nullable List<@NotNull Integer> listOfIntegers = List.of(3, 4, 5);
listOfIntegers = List.of(3, 4, null); // warning

回想一下,包括数组在内的所有集合都是引用值,因此即使它们的元素不能为 null,它们也可以为 null。