局部类:方法中的类 - 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。相反,我先将其保存到最终变量号。”

“能够使用一个方法的变量是非常酷的。我希望好好欣赏它。可惜你不能改变变量。”

“艾莉今天会向你解释为什么你不能改变它们。同时,我要去小睡一个小时左右。”

“晚安,金姆。谢谢你的有趣课程。”