Classes locales : classes à l'intérieur des méthodes - 1

« Salut Amigo ! »

"Un autre petit sujet minuscule est les classes locales ."

"Comme vous l'avez vu, vous pouvez créer des classes non seulement dans des fichiers séparés, mais aussi à l'intérieur d'autres classes. Mais ce n'est pas tout. Les classes peuvent également être créées dans des méthodes. Ces classes sont appelées classes locales. Elles fonctionnent comme des classes internes ordinaires, mais ils peuvent être utilisés dans les méthodes dans lesquelles ils sont déclarés."

"Regarde l'écran:"

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

« Et pourquoi avons-nous besoin de telles classes ?

"Mettre une classe, avec tous ses constructeurs et méthodes, à l'intérieur d'une méthode ne rend pas le code très lisible, vous ne pensez pas ?"

"Exactement. Vous avez tout à fait raison."

"Vous pouvez également utiliser des classes internes anonymes à l'intérieur des méthodes. Mais ces classes ont un petit avantage, et par conséquent, elles sont assez souvent utilisées à l'intérieur des méthodes."

"Une classe déclarée dans une méthode peut utiliser les variables locales de cette méthode :"

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

"Mais il y a une limitation : les variables sont en « lecture seule » - elles ne peuvent pas être modifiées. »

"Voici pourquoi cette restriction existe :"

"Les classes déclarées dans une méthode ne peuvent accéder qu'aux variables d'une méthode qui sont déclarées à l'aide du mot clé final. Dans l'exemple ci-dessus, vous pouvez voir que je ne peux pas attribuer immédiatement la valeur de i à policeNumber. Au lieu de cela, je l'enregistre d'abord dans le nombre variable final."

"Être capable d'utiliser les variables d'une méthode est super cool. J'espère bien l'apprécier. C'est dommage que vous ne puissiez pas changer les variables cependant."

"Ellie va t'expliquer aujourd'hui pourquoi tu ne peux pas les changer. En attendant, je vais aller faire une sieste d'environ une heure."

"Bonne nuit, Kim. Merci pour cette leçon intéressante."