CodeGym /Java Blog /சீரற்ற /ஜாவாவில் நிலையான மாற்றியைப் பற்றி நீங்கள் தெரிந்து கொள்ள ...
John Squirrels
நிலை 41
San Francisco

ஜாவாவில் நிலையான மாற்றியைப் பற்றி நீங்கள் தெரிந்து கொள்ள வேண்டிய 10 விஷயங்கள்

சீரற்ற குழுவில் வெளியிடப்பட்டது
ஜாவாவில், நிலையான மாற்றி என்பது ஒரு வகுப்போடு நேரடியாக தொடர்புடையது என்று பொருள்: ஒரு புலம் நிலையானதாக இருந்தால், அது வகுப்பைச் சேர்ந்தது; ஒரு முறை நிலையானதாக இருந்தால், அது வகுப்பைச் சேர்ந்தது. இதன் விளைவாக, நிலையான முறையை அழைக்க அல்லது நிலையான புலத்தைக் குறிப்பிட நீங்கள் வகுப்பின் பெயரைப் பயன்படுத்தலாம். எடுத்துக்காட்டாக, countபுலம் வகுப்பில் நிலையானதாக இருந்தால் Counter, பின்வரும் வெளிப்பாடு மூலம் மாறியை நீங்கள் குறிப்பிடலாம்: Counter.count. ஜாவாவில் உள்ள நிலையான மாற்றியைப் பற்றி நீங்கள் தெரிந்து கொள்ள வேண்டிய 10 விஷயங்கள் - 1நிச்சயமாக, அணுகல் மாற்றிகளைக் கருத்தில் கொள்ள வேண்டும். எடுத்துக்காட்டாக, privateபுலங்கள் அறிவிக்கப்பட்ட வகுப்பிற்குள் மட்டுமே கிடைக்கும். protectedஒரு தொகுப்பில் உள்ள அனைத்து வகுப்புகளுக்கும், தொகுப்பிற்கு வெளியே உள்ள அனைத்து துணைப்பிரிவுகளுக்கும் புலங்கள் கிடைக்கும் . Counterவகுப்பில் ஒரு நிலையான முறை உள்ளது என்று வைத்துக்கொள்வோம் increment(), அதன் பணியை அதிகரிப்பதுcountகளம். இந்த முறையை அழைக்க, நீங்கள் பயன்படுத்தலாம் Counter.increment(). Counterநிலையான புலம் அல்லது முறையை அணுக வகுப்பின் உதாரணத்தை உருவாக்க வேண்டிய அவசியமில்லை . இது நிலையான (வகுப்பு) மாறிகள் மற்றும் முறைகள் மற்றும் நிலையான அல்லாத (உதாரண) மாறிகள் மற்றும் முறைகள் ஆகியவற்றுக்கு இடையேயான அடிப்படை வேறுபாடு ஆகும். ஒரு முக்கியமான குறிப்பு. வகுப்பின் நிலையான உறுப்பினர்கள் நேரடியாக வகுப்பைச் சேர்ந்தவர்கள் என்பதை மறந்துவிடாதீர்கள், வகுப்பின் எந்த நிகழ்வும் அல்ல. அதாவது, நிலையான countமாறியின் மதிப்பு அனைத்து பொருட்களுக்கும் ஒரே மாதிரியாக இருக்கும் Counter. இந்தக் கட்டுரையில், ஜாவாவில் நிலையான மாற்றியைப் பயன்படுத்துவதற்கான அடிப்படை அம்சங்களையும், முக்கிய நிரலாக்கக் கருத்துக்களைப் புரிந்துகொள்ள உதவும் சில அம்சங்களையும் பார்ப்போம்.

ஜாவாவில் உள்ள நிலையான மாற்றியைப் பற்றி ஒவ்வொரு புரோகிராமரும் தெரிந்து கொள்ள வேண்டியது.

இந்த பிரிவில், நிலையான முறைகள், புலங்கள் மற்றும் வகுப்புகளைப் பயன்படுத்துவதற்கான முக்கிய அம்சங்களைப் பார்க்கிறோம். மாறிகளுடன் ஆரம்பிக்கலாம்.
  1. நிலையான முறை அல்லது தொகுதி போன்ற நிலையான சூழலில் ஒரு வகுப்பின் நிலையான உறுப்பினர்களை நீங்கள் அணுக முடியாது. கீழே உள்ள குறியீட்டை தொகுத்தால் பிழை ஏற்படும்:

    
    public class Counter {
    private int count;
    public static void main(String args []) {
       System.out.println(count); //  Compile time error
    }
    }
    

    ஜாவா புரோகிராமர்கள், குறிப்பாக புதியவர்கள் செய்யும் பொதுவான தவறுகளில் இதுவும் ஒன்றாகும். mainமுறை நிலையானது மற்றும் countமாறி இல்லை என்பதால் , முறையின் printlnஉள்ளே இருக்கும் முறையைப் பயன்படுத்துவது main"தொகுக்கும் நேரப் பிழையை" உருவாக்கும்.

  2. thread safeஉள்ளூர் மாறிகள் போலல்லாமல், நிலையான புலங்கள் மற்றும் முறைகள் ஜாவாவில் இல்லை . நடைமுறையில், மல்டி த்ரெட்டு புரோகிராமிங்கில் பாதுகாப்புச் சிக்கல்களுக்கு இதுவே அடிக்கடி காரணமாகும். ஒரு வகுப்பின் ஒவ்வொரு நிகழ்வும் நிலையான மாறியின் அதே நகலைக் குறிப்பிடுகிறது என்பதைக் கருத்தில் கொண்டு, அத்தகைய மாறி வகுப்பால் பாதுகாக்கப்பட வேண்டும் அல்லது "பூட்டப்பட வேண்டும்". synchronizedஎனவே, நிலையான மாறிகளைப் பயன்படுத்தும் போது, ​​​​போன்ற சிக்கல்களைத் தவிர்க்க அவை சரியாக இருப்பதை உறுதிப்படுத்திக் கொள்ளுங்கள் race conditions.

  3. நிலையான முறைகள் ஒரு நடைமுறை நன்மையைக் கொண்டுள்ளன, ஒவ்வொரு முறையும் நீங்கள் அவற்றை அழைக்க விரும்பும் புதிய பொருளை உருவாக்க வேண்டிய அவசியமில்லை. அதை அறிவிக்கும் வகுப்பின் பெயரைப் பயன்படுத்தி ஒரு நிலையான முறையை அழைக்கலாம். அதனால்தான் இந்த முறைகள் factoryமுறைகள் மற்றும் utilityமுறைகளுக்கு சரியானவை. வகுப்பு java.lang.Mathஒரு அற்புதமான எடுத்துக்காட்டு: கிட்டத்தட்ட அதன் அனைத்து முறைகளும் நிலையானவை. finalஜாவாவின் பயன்பாட்டு வகுப்புகள் அதே காரணத்திற்காக குறிக்கப்பட்டுள்ளன .

  4. @Overrideமற்றொரு முக்கியமான விஷயம் என்னவென்றால், நீங்கள் ( ) நிலையான முறைகளை மீற முடியாது . நீங்கள் அத்தகைய முறையை ஒரு ல் அறிவித்தால் subclass, அதாவது அதே பெயர் மற்றும் கையொப்பம் கொண்ட ஒரு முறை, அதை superclassமீறுவதற்குப் பதிலாக "மறை" என்ற முறையைப் பயன்படுத்துகிறீர்கள். இந்த நிகழ்வு அறியப்படுகிறது method hiding. இதன் பொருள், பெற்றோர் மற்றும் குழந்தை வகுப்புகள் இரண்டிலும் நிலையான முறை அறிவிக்கப்பட்டால், தொகுக்கும் நேரத்தில் அழைக்கப்படும் முறை எப்போதும் மாறி வகையின் அடிப்படையில் இருக்கும். முறை மேலெழுதுவதைப் போலன்றி, நிரல் இயங்கும் போது அத்தகைய முறைகள் செயல்படுத்தப்படாது. ஒரு உதாரணத்தைக் கருத்தில் கொள்வோம்:

    
    class Vehicle {
         public static void kmToMiles(int km) {
              System.out.println("Inside the parent class / static method");
         } 
    }
    
    class Car extends Vehicle {
         public static void kmToMiles(int km) {
              System.out.println("Inside the child class / static method");
         } 
    }
    
    public class Demo {   
       public static void main(String args []) {
          Vehicle v = new Car();
           v.kmToMiles(10);
      }
    }
    

    கன்சோல் வெளியீடு:

    பெற்றோர் வகுப்பு / நிலையான முறையின் உள்ளே

    பொருள் ஒரு Car, வகுப்பில் நிலையான முறை Vehicleஅழைக்கப்படுகிறது, ஏனெனில் தொகுக்கும் நேரத்தில் முறை அழைக்கப்பட்டது என்பதை குறியீடு தெளிவாக நிரூபிக்கிறது. தொகுத்தல் பிழைகள் எதுவும் இல்லை என்பதை நினைவில் கொள்க!

  5. மேலும் என்னவென்றால், உயர்நிலை வகுப்புகளைத் தவிர, நீங்கள் வகுப்புகளை நிலையானதாக அறிவிக்கலாம். இத்தகைய வகுப்புகள் என அழைக்கப்படுகின்றன nested static classes. சிறந்த ஒருங்கிணைப்பை வழங்க அவை பயனுள்ளதாக இருக்கும். உள்ளமைக்கப்பட்ட நிலையான வகுப்பின் ஒரு குறிப்பிடத்தக்க உதாரணம் HashMap.Entry, இது உள்ளே இருக்கும் தரவுக் கட்டமைப்பாகும் HashMap. உள் வகுப்புகளைப் போலவே, நிலையான உள்ளமை வகுப்புகளும் ஒரு தனி .class கோப்பில் அறிவிக்கப்படுகின்றன என்பது கவனிக்கத்தக்கது. எனவே, உங்கள் பிரதான வகுப்பில் ஐந்து உள்ளமை வகுப்புகளை அறிவித்தால், .class நீட்டிப்புடன் 6 கோப்புகள் உங்களிடம் இருக்கும். மற்றொரு உதாரணம் வகுப்பில் Comparatorவயது ஒப்பீட்டாளர் ( ) போன்ற நமது சொந்த அறிவிப்பு .AgeComparatorEmployee

  6. நிலையான மாற்றியமைப்பானது நிலையான தொகுதியிலும் குறிப்பிடப்படலாம், இது "நிலையான துவக்கத் தொகுதி" என அறியப்படுகிறது, இது வகுப்பு ஏற்றப்படும்போது செயல்படுத்தப்படும். அத்தகைய தொகுதியை நீங்கள் அறிவிக்கவில்லை எனில், ஜாவா அனைத்து நிலையான புலங்களையும் ஒரே பட்டியலில் சேகரித்து, வகுப்பு ஏற்றப்படும் போது அவற்றை துவக்குகிறது. ஒரு நிலையான தொகுதி சரிபார்க்கப்பட்ட விதிவிலக்குகளை வீச முடியாது, ஆனால் அது சரிபார்க்கப்படாதவற்றை வீசலாம். இந்த வழக்கில், ஒரு ExceptionInInitializerErrorநடக்கும். நடைமுறையில், நிலையான புலங்களின் துவக்கத்தின் போது ஏற்படும் எந்த விதிவிலக்குகளும் ஜாவாவால் இந்த பிழையில் மூடப்பட்டிருக்கும். இது மிகவும் பொதுவான காரணமாகும் NoClassDefFoundError, ஏனெனில் வகுப்பு குறிப்பிடப்படும் போது அது நினைவகத்தில் இருக்காது.

  7. மெய்நிகர் அல்லது நிலையான அல்லாத முறைகளை இணைப்பதைப் போலன்றி, நிலையான முறைகள் தொகுக்கும் நேரத்தில் இணைக்கப்பட்டுள்ளன என்பதை அறிவது பயனுள்ளது, அவை உண்மையான பொருளின் மீது அழைக்கப்படும் போது இயக்க நேரத்தில் இணைக்கப்படும். அதன்படி, ஜாவாவில் நிலையான முறைகளை மேலெழுத முடியாது, ஏனெனில் இயக்க நேரத்தில் பாலிமார்பிசம் அவர்களுக்கு பொருந்தாது. ஒரு முறையை நிலையானதாக அறிவிக்கும்போது கருத்தில் கொள்ள வேண்டிய முக்கியமான வரம்பு இதுவாகும். துணைப்பிரிவில் உள்ள முறையை மீறும் திறன் அல்லது தேவை இல்லாதபோது மட்டுமே அவ்வாறு செய்வது அர்த்தமுள்ளதாக இருக்கும். தொழிற்சாலை முறைகள் மற்றும் பயன்பாட்டு முறைகள் நிலையான மாற்றியின் சரியான பயன்பாட்டிற்கு சிறந்த எடுத்துக்காட்டுகள். ஒவ்வொரு ஜாவா புரோகிராமருக்கும் கட்டாயம் படிக்க வேண்டிய எஃபெக்டிவ் ஜாவா புத்தகத்தில் நிலையான தொழிற்சாலை முறைகள் கட்டமைப்பாளர்களை விட பல நன்மைகளை ஜோசுவா ப்ளாச் சுட்டிக்காட்டுகிறார்.

  8. துவக்கம் என்பது நிலையான தொகுதியின் ஒரு முக்கிய அம்சமாகும். வகுப்பு நினைவகத்தில் ஏற்றப்பட்ட பிறகு நிலையான புலங்கள் அல்லது மாறிகள் துவக்கப்படும். துவக்க வரிசை மேலிருந்து கீழாக உள்ளது, அதே வரிசையில் அவை ஜாவா வகுப்பின் மூல கோப்பில் அறிவிக்கப்படுகின்றன. நிலையான புலங்கள் நூல்-பாதுகாப்பான முறையில் துவக்கப்படுவதால், இந்த செயல்முறையும் Singletonவடிவத்தை செயல்படுத்த பயன்படுகிறது. Enumசில காரணங்களுக்காக நீங்கள் பயன்படுத்தவில்லை என்றால் Singleton, உங்களுக்கு ஒரு நல்ல மாற்று உள்ளது. ஆனால் இந்த விஷயத்தில், இது ஒரு "சோம்பேறி" துவக்கம் அல்ல என்பதை நீங்கள் கணக்கில் எடுத்துக்கொள்ள வேண்டும். யாரேனும் "கேட்கும்" முன்பே நிலையான புலம் துவக்கப்படும் என்பதே இதன் பொருள். ஒரு பொருள் வளம் அதிகமாக இருந்தால் அல்லது அரிதாகவே பயன்படுத்தினால், அதை ஒரு நிலையான தொகுதியில் துவக்குவது உங்களுக்கு சாதகமாக செயல்படாது.

  9. வரிசைப்படுத்தலின் போது, transient​​மாறிகள் போன்ற நிலையான புலங்கள் வரிசைப்படுத்தப்படுவதில்லை. உண்மையில், நீங்கள் நிலையான புலத்தில் ஏதேனும் தரவைச் சேமித்தால், அது அதன் ஆரம்ப (இயல்புநிலை) மதிப்பைக் கொண்டிருக்கும். எடுத்துக்காட்டாக, நிலையான புலம் ஒரு என்றால் int, அதன் மதிப்பு டீரியலைசேஷன் பிறகு பூஜ்ஜியமாக இருக்கும். அதன் வகை என்றால் float, மதிப்பு 0.0 ஆக இருக்கும். புலம் ஒரு என்றால் Object, மதிப்பு இருக்கும் null. உண்மையைச் சொல்வதானால், ஜாவா பதவிகளுக்கான நேர்காணல்களில் வரிசைப்படுத்தல் பற்றி அடிக்கடி கேட்கப்படும் கேள்விகளில் இதுவும் ஒன்றாகும். அத்தியாவசிய பொருள் தரவை நிலையான புலத்தில் சேமிக்க வேண்டாம்!

  10. இறுதியாக, நிலையான இறக்குமதி பற்றி பேசலாம். இந்த மாற்றியமைப்பானது நிலையான அறிக்கையுடன் மிகவும் பொதுவானது import, ஆனால் இது வேறுபட்டது, இது ஒன்று அல்லது அனைத்து நிலையான வகுப்பு உறுப்பினர்களை இறக்குமதி செய்ய உங்களை அனுமதிக்கிறது. நிலையான முறைகள் இறக்குமதி செய்யப்பட்டவுடன், அவை ஒரே வகுப்பில் அறிவிக்கப்பட்டதைப் போல அணுகலாம். இதேபோல், நிலையான புலங்களை இறக்குமதி செய்வதன் மூலம், வகுப்பின் பெயரைக் குறிப்பிடாமல் அவற்றை அணுகலாம். இந்த அம்சம் ஜாவா 1.5 இல் தோன்றியது மற்றும் சரியாகப் பயன்படுத்தும்போது குறியீட்டைப் படிக்கும் திறனை மேம்படுத்துகிறது. இந்த கட்டமைப்பானது ஜூனிட் சோதனைகளில் பெரும்பாலும் காணப்படுகிறது, ஏனெனில் கிட்டத்தட்ட அனைத்து சோதனை டெவலப்பர்களும் உறுதியான முறைகளுக்கு நிலையான இறக்குமதியைப் பயன்படுத்துகின்றனர், எ.கா. assertEquals()மற்றும் அவற்றின் ஓவர்லோடட் மாறுபாடுகள்.

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

கருத்துக்கள்
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION