Serializable
lambdas 外部的非 Serializable
局部变量、局部类和匿名类的引用。
从匿名类引用局部变量时,其值存储在该类的隐式字段中。 对于局部类和 lambdas 也是如此。 如果变量类型为非 Serializable
,序列化将会失败。
示例:
interface A extends Serializable {
abstract void foo();
}
class B {}
class C {
void foo() {
B b = new B();
A a = new A() {
@Override
public void foo() {
System.out.println(b); // 警告
}
};
}
}