天天看點

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

錯誤資訊:

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

原代碼:

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<Map<String, String>> tmp = new ArrayList<>(list.subList(20, 40));
					dtoErrorDataSqlResult.setDatas(tmp);
				} else {
					dtoErrorDataSqlResult.setDatas(list);
				}

				addValue("cacheDFS", cacheID, dtoErrorDataSqlResult);// 緩存查詢結果
			}
           

看源碼注釋得知錯誤原因是:List.subList方法傳回的隻是一個視圖,而ehcache寫入磁盤需要的是實體,是以出現此問題!