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

我计划在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,而后一个则没有。

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

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

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2979343.html

大家都在问