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方法,并直接执行检查