Apa pancene kedadeyan (yaiku apa sing digawe kompiler saka kelas) - 1

"Hai, Amigo! Iki sawetara informasi liyane kanggo sampeyan."

"Aku wis ngandhani yen kompiler kasebut bener-bener ngowahi kabeh kelas anonim dadi kelas batin biasa."

"Ya, aku malah kelingan sing jenenge nomer: 1, 2, 3, lsp."

"Pancen. Nanging ana nuansa liyane ing kene."

"Yen kelas diumumake ing sawijining metode lan nggunakake salah sawijining variabel, mula referensi kanggo variabel kasebut bakal ditambahake menyang kelas sing digawe. Deleng dhewe."

"Kita miwiti karo iki:"

Sadurunge kompilasi:
class Car
{
 public ArrayList createPoliceCars(int count)
 {
  ArrayList result = new ArrayList();

  for(int i = 0; i < count; i++)
  {
 final int number = i;
   result.add(new Car()
    {
     public String toString()
     {
      return ""+number;
     }
    });
  }
  return result;
 }
}

"Lan compiler ngasilake iki:

Sawise kompilasi:
class Car
{
 public ArrayList createPoliceCars(int count)
 {
  ArrayList result = new ArrayList();

  for(int i = 0; i < count; i++)
  {
   final int number = i;
   result.add(new Anonymous2 (number));
  }
   return result;
  }

 class Anonymous2
 {
  final int number;
  Anonymous2(int number)
 {
  this.number = number;
 }

  public String toString()
  {
   return ""+ number;
  }
 }
}

"Apa sampeyan entuk titik kasebut? Kelas batin ora bisa ngganti variabel lokal metode kasebut, amarga nalika kode kelas njero dieksekusi, kita bisa uga metu saka metode kasebut."

"Saiki titik kapindho. Cara toString () nggunakake variabel liwati. Kanggo ngrampungake iki, perlu: "

A) simpen ing kelas sing digawe

B) ditambahake menyang konstruktor.

"Get it. Classes declared inside method always use the copy of variables."

"Pancen!"

"Banjur nggawe pangertèn kenapa variabel kudu final. Lan kenapa ora bisa diganti. Yen sampeyan bener-bener nggarap salinan tinimbang asline, pangguna ora bakal ngerti sebabe dheweke ora bisa ngganti nilai variabel, sing tegese kita mung kudu nglarang dheweke ngganti dheweke."

"Bener, wara-wara variabel minangka final misale jek rega cilik kanggo mbayar ing ijol-ijolan kanggo gadhah compiler generate kelas kanggo sampeyan, pass menyang cara, lan nyimpen kabeh variabel cara sing pengin digunakake."

"Aku setuju. Kelas lokal anonim isih super keren."

"Yen aku wara-wara kelas lokal nang cara, lan aku nggunakake variabel cara ing, bakal compiler nambah menyang kelas uga?"

"Ya, iku bakal nambah menyang kelas lan konstruktor sawijining."

"Iku sing dakkira."