Java Gson isJsonObject()抛出NullPointerException

Java Gson isJsonObject()抛出NullPointerException,java,nullpointerexception,gson,nul,Java,Nullpointerexception,Gson,Nul,我有以下代码: final JsonObject source = source.toJson(); final JsonElement relatedSpace = source.get("myField"); if(relatedSpace.isJsonObject()){ //do something } isJsonObject()不返回JsonObject的实例根据Gson代码instanceof应该首先进行null检查,所以我不确定当relatedSpace为null时,我的代

我有以下代码:

final JsonObject source = source.toJson();
final JsonElement relatedSpace = source.get("myField");
if(relatedSpace.isJsonObject()){
  //do something
}

isJsonObject()
不返回JsonObject的实例根据Gson代码
instanceof
应该首先进行
null
检查,所以我不确定当
relatedSpace
null
时,我的代码怎么可能抛出
NullPointerException
。我可以很容易地先检查
null
来解决问题,但我想知道为什么会发生这种情况。

在它之后的方法之前执行
操作符


如果对象为
null
,则无论方法的内容如何,它都会导致
NullPointerException

在它之后的方法之前执行
操作符


如果对象为
null
,则无论方法的内容如何,它都会导致
NullPointerException

因为
relatedSpace
在您描述的情况下设置为
null
(使用之前)。实际上,您可以从以下表达式中获得
null

final JsonElement relatedSpace = source.get("myField"); 
(这意味着e不是与键“
myField
”关联的
jsonement

要避免null,您只需在使用它之前检查它-

if(null!=relatedSpace && relatedSpace.isJsonObject()){
  //do something
}

有关如何避免
NullPointerException
的详细信息,您可以检查,因为
relatedSpace
在您描述的情况下设置为
null
(使用前)。实际上,您可以从以下表达式中获得
null

final JsonElement relatedSpace = source.get("myField"); 
(这意味着e不是与键“
myField
”关联的
jsonement

要避免null,您只需在使用它之前检查它-

if(null!=relatedSpace && relatedSpace.isJsonObject()){
  //do something
}

有关如何避免
NullPointerException
的详细信息,请检查您正在获得NPE,因为您正在对null引用执行方法调用。您混淆的是java中运算符和方法之间的关系。instanceof是java中的一个运算符,它也可以处理null引用,但是对null引用的方法调用是一种例外情况,应该通过null检查来处理。您可以做的另一件事是完全放弃GSON方法,并直接执行检查。

您得到NPE,因为您正在对null进行方法调用参考资料。您混淆的是java中运算符和方法之间的关系。instanceof是java中的一个运算符,它也可以处理null引用,但是对null引用的方法调用是一个例外情况,应该通过null检查来处理。您可以做的另一件事是完全放弃GSON方法,并直接执行检查