因此,我使用的API在某些方面有点不友好。基本上,此API创建的资源可在以后获取。当我们以后去获取它时,该资源可能存在或可能不存在。
要获取先前创建的资源,您必须使用结果guid,如下所示:
String resultKey = "12345";
PersistedResult r = mFactory.getPersistedResult(resultKey);
现在,这里棘手的事情是
getPersistedResult
在使用无效的guid调用时不会引发异常... PersistedResult
是一个惰性加载器,仅在调用其方法之一(导致对象自行加载)时才会失败。因此,为了确定资源是否有效,我正在执行以下操作:
PersistedResult r = null;
if (!StringUtils.isEmpty(resultKey)) {
try {
r = mFactory.getPersistedResult(resultKey);
r.getResultCount(); // Triggers exception if result key was invalid.
} catch (Exception e) {
// handle exception
}
}
因为我没有使用该值,我对
getResultCount
的调用是否有被优化的风险? 以防万一,在
PersistedResult
上调用任何方法都将转到外部数据库。谢谢
最佳答案
编译器不能假定getResultCount()没有副作用-因此它不能删除该调用。