我计划在Java 11中序列化lambda表达式。但是,我不确定Java 11中lambda表达式的 exact 行为。
为简单起见,在这里我将SerializableFunction
定义为Function
和Serializable
的交集类型。
由于隐式合成anonymousInnerClass
的绑定,我知道以下代码中的this
对象不应被序列化。
SerializableFunction<Object, Object> anonymousInnerClass = new SerializableFunction<Object, Object>() {
@Override
public Object apply(Object o) {
return null;
}
};
如果lambda表达式只是匿名内部类的语法糖,则lambdaExpression
对象也不应序列化。
Function<Object, Object> lambdaExpression = (o) -> null;
但是,在我的环境中,前一个代码引发NotSerializableException
,而后一个则没有。
关于此行为是否有官方描述?