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;
}

标黄的部分报空指针,大侠们看下什么情况会报空
...全文
215 2 打赏 收藏 举报
写回复
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
  • 打赏
  • 举报
回复
偶尔会有异常报出来,不是每次都报,有点不解
相关推荐
发帖
Java

4.9w+

社区成员

Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
帖子事件
创建了帖子
2015-07-16 07:44
社区公告
暂无公告