因此,我使用的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()没有副作用-因此它不能删除该调用。

07-26 03:55