序列化lambda函数的映射

时间:2016-12-07 09:27:40

标签: java serialization lambda

我有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函数映射?

1 个答案:

答案 0 :(得分:2)

我认为你可以将lambda转换为函数接口和Serializable的交集,以使其可序列化。试试这个:

functionMap.put("test", 
      (Consumer<Type1> & Serializable)((Type1 t) -> evalSessionSetupReq((Type2) t)));