Serializable ラムダ、ローカルおよび匿名クラスの外にあるローカルの非 Serializable 変数の参照を報告します。
ローカル変数が匿名クラスから参照される場合、変数の値はそのクラスの暗黙的なフィールドに格納されます。 ローカルクラスとラムダについても同様です。 変数が非 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); // 警告
}
};
}
}