本地類:方法中的類 - 1

“嗨,阿米戈!”

“另一個小小的話題是地方課。”

“正如你所看到的,你不僅可以在單獨的文件中創建類,還可以在其他類內部創建類。但這還不是全部。類也可以在方法內創建。這些類稱為本地類。它們的工作方式與普通的內部類一樣,但是它們可以在它們聲明的方法中使用。”

“看屏幕:”

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

  class PoliceCar extends Car
  {
   int policeNumber;
   PoliceCar(int policeNumber)
  {
   this.policeNumber = policeNumber;
  }
 }

 for(int i = 0; i < count; i++)
     result.add(new PoliceCar(i));
  return result;
 }
}

“為什麼我們需要這樣的課程?”

“將一個類及其所有構造函數和方法放在一個方法中不會產生非常可讀的代碼,你不覺得嗎?”

“完全正確。你完全正確。”

“你也可以在方法內部使用匿名內部類。但這些類確實有一個小優勢,因此,它們經常在方法內部使用。”

“在方法中聲明的類可以使用該方法的局部變量:”

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 = number;
  });
 }
  return result;
 }
}

“但有一個限制:變量是«只讀的»——它們不能被改變。”

“這就是存在該限制的原因:”

“在方法中聲明的類只能訪問使用關鍵字 final 聲明的方法的變量。在上面的示例中,您可以看到我無法立即將 i 的值分配給 policeNumber。相反,我先將其保存到最終變量號。”

“能夠使用一個方法的變量是非常酷的。我希望好好欣賞它。可惜你不能改變變量。”

“艾莉今天會向你解釋為什麼你不能改變它們。同時,我要去小睡一個小時左右。”

“晚安,Kim。謝謝你的有趣課程。”