Classes locais: classes dentro de métodos - 1

"Olá, amigo!"

"Outro pequeno tópico são as aulas locais ."

"Como você viu, você pode criar classes não apenas em arquivos separados, mas também dentro de outras classes. Mas isso não é tudo. Classes também podem ser criadas dentro de métodos. Essas classes são chamadas de classes locais. Elas funcionam como classes internas comuns, mas eles podem ser usados ​​dentro dos métodos em que são declarados."

"Olhe para a tela:"

Exemplo
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;
 }
}

"E por que precisamos dessas aulas?"

"Colocar uma classe, com todos os seus construtores e métodos, dentro de um método não torna o código muito legível, você não acha?"

"Exatamente. Você está absolutamente certo."

"Você também pode usar classes internas anônimas dentro de métodos. Mas essas classes têm uma pequena vantagem e, consequentemente, são usadas dentro de métodos com bastante frequência."

"Uma classe declarada dentro de um método pode usar as variáveis ​​locais desse método:"

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

"Mas há uma limitação: as variáveis ​​são «somente leitura» - elas não podem ser alteradas."

"Aqui está o porquê dessa restrição existir:"

"As classes declaradas dentro de um método só podem acessar as variáveis ​​de um método que são declaradas usando a palavra-chave final. No exemplo acima, você pode ver que não posso atribuir imediatamente o valor de i a policeNumber. Em vez disso, primeiro salvo-o no número variável final."

"Ser capaz de usar as variáveis ​​de um método é super legal. Espero apreciá-lo adequadamente. É uma pena que você não possa alterar as variáveis."

"Ellie vai explicar para você hoje porque você não pode trocá-los. Enquanto isso, vou tirar uma soneca por cerca de uma hora."

"Boa noite, Kim. Obrigado pela interessante lição."