我有Type2 extends Type1
。
我有一张功能图:
private final Map<String, Consumer<Type1>> functionMap;
{
functionMap = new HashMap<>();
functionMap.put("test", (Type1 t) -> evalSessionSetupReq((Type2) t));
}
工作正常。但是当我尝试序列化该地图时,我得到NotSerializableException
例外。
我试图使用:
functionMap.put("test", (Serializable)(Type1 t) -> evalSessionSetupReq((Type2) t));
但它不起作用。
如何序列化这样的lambda函数映射?
答案 0 :(得分:2)
我认为你可以将lambda转换为函数接口和Serializable
的交集,以使其可序列化。试试这个:
functionMap.put("test",
(Consumer<Type1> & Serializable)((Type1 t) -> evalSessionSetupReq((Type2) t)));