我想正确处理 NPE 警告。例子:@NullableLiveData<User> currentUser;LiveData<List<Medication>> getUserMeds() { return parent.getMedsForUser(this.currentUser.getValue().getId());}为方法显示两个 NPE 警告getValue()getId()我目前正在通过检查非空值来确保我不会在函数外部弄乱,但我会觉得在函数内部实现它会更好。
2 回答
一只斗牛犬
TA贡献1784条经验 获得超2个赞
在函数内部返回值之前执行检查:
LiveData<List<Medication>> getUserMeds() { if (this.currentUser == null) return "Some default value or throw an Exception" return parent.getMedsForUser(this.currentUser.getValue().getId()); }
拉风的咖菲猫
TA贡献1995条经验 获得超2个赞
这完全取决于您要创建哪种逻辑。
解释
您收到此警告的原因是,如果其中一个返回null
,它会崩溃,因为您遇到类似 的情况null.method()
,这显然无法正常工作。
注释
您可以使用您已经熟悉的注释 (@Nullable
和@NotNull
)。然后你的框架可以确保正确的属性,你可以依赖它。
处理好自己
您还可以在您的方法中显式处理大小写,例如:
Value value = currentUser.getValue();
if (value == null) {
// TODO Handle the case ...
}
Id id = value.getId();
if (id == null) {
// TODO Handle the case ...
}
// They are now safe to use
笔记
但是,如果您无法真正处理这种情况,而只会因异常而崩溃,那么处理它并没有真正的好处。
请注意,这this
在您的代码中已过时,因为您在字段和局部变量之间没有名称冲突。
添加回答
举报
0/150
提交
取消