Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何正确处理NPE_Java_Nullpointerexception - Fatal编程技术网

Java 如何正确处理NPE

Java 如何正确处理NPE,java,nullpointerexception,Java,Nullpointerexception,我想正确处理NPE警告 例如: @Nullable LiveData<User> currentUser; LiveData<List<Medication>> getUserMeds() { return parent.getMedsForUser(this.currentUser.getValue().getId()); } 我目前正在检查none null值,以确保不会在函数外部造成混乱,但如果在函数内部实现它,我会感觉更好。在返回函数内部的

我想正确处理NPE警告

例如:

@Nullable
LiveData<User> currentUser;

LiveData<List<Medication>> getUserMeds() {
    return parent.getMedsForUser(this.currentUser.getValue().getId());
}

我目前正在检查none null值,以确保不会在函数外部造成混乱,但如果在函数内部实现它,我会感觉更好。

在返回函数内部的值之前执行检查:

LiveData getUserMeds(){
如果(this.currentUser==null)返回“某个默认值或引发异常”
返回parent.getmedsforser(this.currentUser.getValue().getId());
}

这完全取决于您要创建的逻辑类型

解释 您收到此警告的原因是,如果其中一个将返回
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.currentUser
null
进行显式比较。
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