உண்மையில் என்ன நடக்கிறது (அதாவது கம்பைலர் வகுப்புகளிலிருந்து உருவாக்குவது) - 1

"வணக்கம், அமிகோ! இதோ உங்களுக்காக இன்னும் சில தகவல்கள்."

"கம்பைலர் உண்மையில் அனைத்து அநாமதேய வகுப்புகளையும் சாதாரண உள் வகுப்புகளாக மாற்றுகிறது என்று நான் ஏற்கனவே உங்களிடம் சொன்னேன்."

"ஆம். அவர்களின் பெயர்கள் எண்கள் என்பது கூட எனக்கு நினைவிருக்கிறது: 1, 2, 3, முதலியன."

"சரியாக. ஆனால் இங்கே இன்னொரு நுணுக்கம் இருக்கிறது."

"ஒரு வகுப்பானது ஒரு முறைக்குள் அறிவிக்கப்பட்டு அதன் மாறிகள் ஏதேனும் ஒன்றைப் பயன்படுத்தினால், அந்த மாறிகளின் குறிப்புகள் உருவாக்கப்பட்ட வகுப்பில் சேர்க்கப்படும். நீங்களே பாருங்கள்."

"நாங்கள் இதிலிருந்து தொடங்குகிறோம்:"

தொகுக்கும் முன்:
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;
 }
}

"மேலும் கம்பைலர் இதை உருவாக்குகிறது:

தொகுத்த பிறகு:
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;
  }
 }
}

"உனக்கு விஷயம் புரிந்ததா? உள் வகுப்பினால் முறையின் லோக்கல் மாறியை மாற்ற முடியாது, ஏனென்றால் உள் வகுப்பின் குறியீடு செயல்படுத்தப்படும் நேரத்தில், நாம் முற்றிலும் முறையிலிருந்து வெளியேறலாம்."

"இப்போது இரண்டாவது புள்ளி. toString() முறையானது கடந்து சென்ற மாறியைப் பயன்படுத்துகிறது. இதை நிறைவேற்ற, இது அவசியம்:"

A) உருவாக்கப்பட்ட வகுப்பில் சேமிக்கவும்

B) அதை கட்டமைப்பாளரிடம் சேர்க்கவும்.

"புரிகிறது. முறைகளுக்குள் அறிவிக்கப்பட்ட வகுப்புகள் எப்போதும் மாறிகளின் நகல்களைப் பயன்படுத்துகின்றன."

"சரியாக!"

"அப்படியானால், மாறிகள் ஏன் இறுதியானதாக இருக்க வேண்டும். ஏன் அவற்றை மாற்ற முடியாது. நீங்கள் உண்மையில் அசல்களை விட நகல்களுடன் பணிபுரிகிறீர்கள் என்றால், மாறிகளின் மதிப்புகளை ஏன் மாற்ற முடியாது என்பதை பயனரால் புரிந்து கொள்ள முடியாது. அவற்றை மாற்றுவதை நாம் தடை செய்ய வேண்டும் என்பதாகும்."

"சரி, மாறிகளை இறுதியானது என்று அறிவிப்பது, கம்பைலர் உங்களுக்காக ஒரு வகுப்பை உருவாக்கி, அதை முறைக்கு அனுப்புவதற்கும், நீங்கள் பயன்படுத்த விரும்பும் அனைத்து முறையின் மாறிகளையும் சேமிப்பதற்கும் ஈடாக செலுத்த வேண்டிய சிறிய விலையாகத் தோன்றுகிறது."

"நான் ஒப்புக்கொள்கிறேன். அநாமதேய உள்ளூர் வகுப்புகள் இன்னும் சிறப்பாக உள்ளன."

"நான் ஒரு முறைக்குள் ஒரு உள்ளூர் வகுப்பை அறிவித்து, அதில் முறையின் மாறிகளைப் பயன்படுத்தினால், கம்பைலர் அவற்றையும் வகுப்பில் சேர்க்குமா?"

"ஆம், அது அவர்களை வகுப்பிலும் அதன் கட்டமைப்பாளரிடமும் சேர்க்கும்."

"என்று நான் நினைத்தேன்."