Kelas lokal: kelas di dalam metode - 1

"Hai, Amigo!"

"Topik kecil lainnya adalah kelas lokal ."

"Seperti yang telah Anda lihat, Anda dapat membuat kelas tidak hanya dalam file terpisah, tetapi juga di dalam kelas lain. Tapi bukan itu saja. Kelas juga dapat dibuat dalam metode. Kelas ini disebut kelas lokal. Mereka bekerja seperti kelas dalam biasa, tetapi mereka dapat digunakan dalam metode yang dideklarasikan."

"Lihat layarnya:"

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

"Dan mengapa kita membutuhkan kelas seperti itu?"

"Menempatkan kelas, dengan semua konstruktor dan metodenya, di dalam metode tidak menghasilkan kode yang sangat mudah dibaca, bukan begitu?"

"Tepat. Kamu benar sekali."

"Anda juga dapat menggunakan kelas dalam anonim di dalam metode. Tetapi kelas-kelas ini memiliki satu keuntungan kecil, dan akibatnya, mereka cukup sering digunakan di dalam metode."

"Kelas yang dideklarasikan dalam suatu metode dapat menggunakan variabel lokal metode itu:"

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

"Tapi ada satu batasan: variabelnya adalah «read-only»—tidak bisa diubah."

"Inilah mengapa pembatasan itu ada:"

"Kelas yang dideklarasikan dalam suatu metode hanya dapat mengakses variabel metode yang dideklarasikan menggunakan kata kunci final. Dalam contoh di atas, Anda dapat melihat bahwa saya tidak dapat langsung menetapkan nilai i ke angkapolisi. Sebagai gantinya, saya menyimpannya terlebih dahulu ke nomor variabel akhir."

"Mampu menggunakan variabel metode itu sangat keren. Aku harap benar-benar menghargainya. Sayang sekali kamu tidak bisa mengubah variabel."

"Ellie akan menjelaskan kepadamu hari ini mengapa kamu tidak bisa mengubahnya. Sementara itu, aku akan tidur siang sekitar satu jam."

"Selamat malam, Kim. Terima kasih atas pelajaran menariknya."