Lokale klassen: klassen binnen methoden - 1

"Hallo Amigo!"

"Een ander klein onderwerp zijn lokale lessen ."

"Zoals je hebt gezien, kun je klassen niet alleen in afzonderlijke bestanden maken, maar ook binnen andere klassen. Maar dat is niet alles. Klassen kunnen ook binnen methoden worden gemaakt. Deze klassen worden lokale klassen genoemd. Ze werken als gewone interne klassen, maar ze kunnen worden gebruikt binnen de methoden waarin ze zijn gedeclareerd."

"Kijk naar het scherm:"

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

"En waarom hebben we zulke lessen nodig?"

"Een klasse, met al zijn constructors en methoden, in een methode plaatsen, zorgt niet voor erg leesbare code, vind je niet?"

"Precies. Je hebt helemaal gelijk."

"Je kunt ook anonieme innerlijke klassen gebruiken binnen methoden. Maar deze klassen hebben een klein voordeel, en daarom worden ze vrij vaak binnen methoden gebruikt."

"Een binnen een methode gedeclareerde klasse kan de lokale variabelen van die methode gebruiken:"

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

"Maar er is één beperking: de variabelen zijn "alleen-lezen" - ze kunnen niet worden gewijzigd."

"Hier is waarom die beperking bestaat:"

"Klassen die binnen een methode zijn gedeclareerd, hebben alleen toegang tot de variabelen van een methode die zijn gedeclareerd met het trefwoord final. In het bovenstaande voorbeeld kunt u zien dat ik de waarde van i niet onmiddellijk kan toewijzen aan policeNumber. In plaats daarvan sla ik het eerst op in de laatste variabel nummer."

"Het is super gaaf om de variabelen van een methode te kunnen gebruiken. Ik hoop dat je het goed zult waarderen. Het is jammer dat je de variabelen niet kunt wijzigen."

'Ellie zal je vandaag uitleggen waarom je ze niet kunt verwisselen. Ondertussen ga ik een uurtje slapen.'

"Welterusten, Kim. Bedankt voor de interessante les."