“嗨,阿米戈!”

“如您所知,匿名內部類不能有構造函數。”

“是啊。不太方便。構造函數真的很重要。”

“俗話說,只要你想得夠壞,沒有什麼是不可能的。”

“請記住,靜態變量沒有靜態構造函數,但有一個靜態初始化器——靜態塊。”

“嗯,我記得。”

“匿名內部類具有完全相同的初始值設定項,只是它不是靜態的。”

例子
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;
}
}

“你可以在這樣的類中聲明變量並在初始化器中初始化它們。”

“太好了,現在他們的限制少了很多。”

“有了這個,我們開始了解內部類。我希望你喜歡它。”

“很多。Kim、Rishi,尤其是你,Ellie 的課程簡直是一流的。”

“真是個甜言蜜語!繼續……”