嗨,经过无数个小时,我弄清楚我的问题是什么,但仍无法找到答案。
@Override
public void onStampResult(StampResult result) {
}
onStampResult返回带有以下参数的Class StampResult:
public class StampResult implements Serializable {
public SnowShoeError error;
public SnowShoeStamp stamp;
public boolean secure;
public String receipt;
public Date created;
}
SnowShoeStamp Class是:
public class SnowShoeStamp implements Serializable {
public String serial;
}
SnowShoeError类是:
public class SnowShoeError implements Serializable {
public int code;
public String message;
}
在onStampResult中,我可以根据result
的输出写下逻辑。
成功'stamp'被初始化,'error'不存在。
出现错误时,stamp
不存在且error
已初始化。
result
以下列方式从JSON解析为Class:
try {
stampResult = gson.fromJson(result, StampResult.class);
} catch (JsonSyntaxException jsonException) {
stampResult = new StampResult();
stampResult.error = new SnowShoeError();
stampResult.error.message = result;
}
mOnStampListener.onStampResult(stampResult);
mStampBeingChecked = false;
}
如何在不获取NullPointerExeption的情况下测试error
或stamp
是否存在?
答案 0 :(得分:1)
除非我误解了你的问题,否则你只需要检查是否为空。
为了处理不同的情况,您可以执行以下操作:
@Override
public void onStampResult(StampResult result) {
if (result.error == null){
SnowShoeStamp stamp = result.stamp;
// Process stamp
} else {
SnowShoeError error = stampResult.error;
// Process error
}
}