有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java序列化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) 个答案

  1. # 1 楼答案

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

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