2016-12-07 5 views
0

У меня есть 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)); 

Но это не работает.

Как я могу сериализовать такую ​​карту лямбда-функций?

+0

Вы не можете сериализовать карту «кода» (или обратных вызовов), но вы можете сериализовать данные и с этими данными найти хороший код для вызова, возможно, – NeeL

ответ

2

Я думаю, что вы можете наложить лямбду на пересечение функционального интерфейса и Serializable, чтобы сделать его сериализуемым. Попробуйте следующее:

functionMap.put("test", 
     (Consumer<Type1> & Serializable)((Type1 t) -> evalSessionSetupReq((Type2) t))); 
Смежные вопросы