Classi locali: classi all'interno dei metodi - 1

"Ciao, Amico!"

"Un altro piccolo argomento minuscolo sono le classi locali ".

"Come hai visto, puoi creare classi non solo in file separati, ma anche all'interno di altre classi. Ma non è tutto. Le classi possono anche essere create all'interno di metodi. Queste classi sono chiamate classi locali. Funzionano come normali classi interne, ma possono essere utilizzati all'interno dei metodi in cui sono dichiarati."

"Guarda lo schermo:"

Esempio
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 perché abbiamo bisogno di tali classi?"

"Mettere una classe, con tutti i suoi costruttori e metodi, all'interno di un metodo non rende il codice molto leggibile, non credi?"

"Esattamente. Hai assolutamente ragione."

"Puoi anche usare classi interne anonime all'interno dei metodi. Ma queste classi hanno un piccolo vantaggio e, di conseguenza, vengono usate abbastanza spesso all'interno dei metodi."

"Una classe dichiarata all'interno di un metodo può utilizzare le variabili locali di quel metodo:"

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

"Ma c'è una limitazione: le variabili sono «di sola lettura»—non possono essere modificate."

"Ecco perché esiste questa restrizione:"

"Le classi dichiarate all'interno di un metodo possono accedere solo alle variabili di un metodo dichiarate utilizzando la parola chiave final. Nell'esempio sopra, puoi vedere che non posso assegnare immediatamente il valore di i a policeNumber. Invece, lo salvo prima nel numero variabile finale."

"Essere in grado di utilizzare le variabili di un metodo è fantastico. Spero che lo apprezzi adeguatamente. Peccato che tu non possa cambiare le variabili però."

"Ellie ti spiegherà oggi perché non puoi cambiarli. Nel frattempo, io vado a fare un pisolino per circa un'ora."

"Buona notte, Kim. Grazie per l'interessante lezione."