2016-12-07 22 views
0

我有Type2 extends Type1序列化lambda函数的地图

我有地图的功能:

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

你不能真正序列化一个“代码”(或回调)的地图,但你可以序列化数据和数据找到好的代码来调用也许 – NeeL

回答

2

我认为你可以将lambda投射到功能接口和Serializable的交集以使其可串行化。试试这个:

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