在Java 11中是否有任何有关lambda表达式中隐式捕获`this`的正式文档?

时间:2019-12-04 09:43:29

标签: java serialization lambda anonymous-function

我计划在Java 11中序列化lambda表达式。但是,我不确定Java 11中lambda表达式的 exact 行为。 为简单起见,在这里我将SerializableFunction定义为FunctionSerializable的交集类型。

由于隐式合成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,而后一个则没有。

关于此行为是否有官方描述?

0 个答案:

没有答案