ehcache 空指针问题

David_Zw123 2015-07-16 07:44:07
上代码
public static <T> T getValue(Ehcache cache, String key, Class<T> pojoClassOfT) {
T result = null;
try {
T orig = null;
if (null != cache && cache.get(key) != null && cache.get(key).getObjectValue() != null) {
orig = (T) cache.get(key).getObjectValue();
}
if (orig == null) {
return null;
}
if (orig instanceof PmInfo) {
// 单独处理pmInfo,防止读取后修改内存对象
PmInfo pminfo = (PmInfo) orig;
result = (T) new PmInfo(pminfo);
} else {
result = (T) orig;
}
} catch (RuntimeException e) {
Assertion.assertFail(e);
}
return result;
}

标黄的部分报空指针,大侠们看下什么情况会报空
...全文
243 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
nickycheng 2015-07-17
  • 打赏
  • 举报
回复
2个猜测: 1. key = null 2. cache.get(key) != null && cache.get(key).getObjectValue() != null 并不是原子的,可能执行完cache.get(key) !=null ,但是下一个判断时 cache.get(key) 就==null了,建议先取出来 T t = cache.get(key), 然后再判断。
David_Zw123 2015-07-16
  • 打赏
  • 举报
回复
偶尔会有异常报出来,不是每次都报,有点不解

50,712

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧