java.io.NotSerializableException: java.util.ArrayList$SubList

错误信息:
[img]http://dl2.iteye.com/upload/attachment/0115/8073/73861996-f364-3706-9537-95b39c1daf70.png[/img]

原代码:
			if (null != dtoErrorDataSqlResult) {
if (list.size() > 40) {
dtoErrorDataSqlResult.setDatas(list.subList(20, 40));
} else {
dtoErrorDataSqlResult.setDatas(list);
}

addValue("cacheDFS", cacheID, dtoErrorDataSqlResult);// 缓存查询结果
}


修改后的代码:
			if (null != dtoErrorDataSqlResult) {
if (list.size() > 40) {
List> tmp = new ArrayList<>(list.subList(20, 40));
dtoErrorDataSqlResult.setDatas(tmp);
} else {
dtoErrorDataSqlResult.setDatas(list);
}

addValue("cacheDFS", cacheID, dtoErrorDataSqlResult);// 缓存查询结果
}


看源码注释得知错误原因是:List.subList方法返回的只是一个视图,而ehcache写入磁盘需要的是实体,所以出现此问题!

你可能感兴趣的:(编程错误及处理,Java)