「こんにちは、アミーゴ!」

「すでにご存知のとおり、匿名内部クラスはコンストラクターを持つことができません。」

「そうですね。あまり便利ではありません。コンストラクターは本当に重要です。」

「よく言われるように、本気で望めば不可能なことはない。」

「静的変数には静的コンストラクターはありませんが、静的初期化子、つまり静的ブロックが存在することを覚えておいてください。」

「はい、覚えています。」

「匿名の内部クラスは、静的でないことを除いて、まったく同じ初期化子を持ちます。」

class Car
{
 public ArrayListcreatePoliceCars(int count)
 {
  ArrayList result = new ArrayList();

  for(int i = 0; i < count; i++)
  {
    final int number = i;
    result.add(new Car()
    {
      int policeNumber;
      {
        policeNumber = number;
      }
    });
  }
  return result;
 }
}

「今回は、匿名の内部クラス コードを赤で強調表示し、その初期化子 (実際にはコンストラクター) を紫で強調表示しました。「コンストラクター」には本体がありますが、メソッド シグネチャはありません。

期待 現実
class Car
{
int policeNumber;
 Car(){
  policeNumber = number;
 }
}
class Car
{
int policeNumber;
{
policeNumber = number;
}
}

「そのようなクラス内で変数を宣言し、イニシャライザで初期化できます。」

「素晴らしいですね、制限が大幅に減りました。」

「これで、私たちは内部クラスについて知ることができました。気に入っていただければ幸いです。」

「たくさんあります。キム、リシ、そして特にあなた、エリーからのレッスンは本当に一流でした。」

「なんて優しい話し方なんだ! 続けて…」