2016-12-07 51 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)));