java中的nullable_java – @NonNull和@Nullable的正确用法是什么?

我对这些注释的正确使用感到困惑.

android.support.annotation.NonNull;

android.support.annotation.Nullable;

@NonNull文档中的信息说:

Denotes that a parameter, field or method return value can never be null.

在参数的情况下,这意味着什么,什么都没有阻止你传递null?

例如,假设我有一个MyObject类,并且一个实例可能有也可能没有标题.

public final class MyObject {

private String title = null;

public void setTitle(String title) {

if (title == null)

throw new NullPointerException();

this.title = title;

}

public void clearTitle() {

title = null;

}

}

这里我使用null来表示缺少标题,但这是一个实现细节,所以我不想要一个方法来设置和清除标题.

如果我将字段标题标记为@Nullable,android studio告诉我setTitle的参数也应该标记为@Nullable(但这与我想要的相反).

如果我将setTitle方法的参数标记为@NonNull,我会收到警告条件title == null始终为false.

在这种情况下,这些注释的正确用法是什么?如果@NonNull意味着参数永远不能为null,那么使用它来表示不应该为空是错误的吗?如果是,是否有正确的方法来表明这一点?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值