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); // 警告
              }
          };
      }
  }