2005 ஆம் ஆண்டில், ஜாவா 5 இன் வருகையுடன், சிறுகுறிப்புகள் எனப்படும் புதிய நிறுவனங்களை நாங்கள் அறிந்தோம்.
சிறுகுறிப்புகள் என்பது குறியீட்டில் அறிவிக்கக்கூடிய தொடரியல் மெட்டாடேட்டாவின் சிறப்பு வடிவமாகும். தொகுப்பின் போது அல்லது இயக்க நேரத்தில் குறியீட்டை பகுப்பாய்வு செய்ய அவை பயன்படுத்தப்படுகின்றன. சிறுகுறிப்பை லேபிள், டேக் அல்லது கம்பைலர் குறிப்பு என நீங்கள் நினைக்கலாம்.
நீங்கள் ஏற்கனவே சிறுகுறிப்புகளைக் கண்டிருக்கலாம். எடுத்துக்காட்டாக, பெற்றோர் வகுப்பின் ஒரு முறையை மேலெழுதும்போது, அந்த முறைக்கு முன்பே @Override என்று எழுதுகிறோம். குழந்தை வகுப்பில் பெற்றோரின் முறை மேலெழுதப்படும் என்பதை இந்த சிறுகுறிப்பு சுட்டிக்காட்டுகிறது.
தொடரியல்:
@Override
public int hashCode() {
return super.hashCode();
}
சிறுகுறிப்புகள் முறைகளுக்கு மட்டும் பொருந்தாது என்பதை இப்போதே கவனிக்க விரும்புகிறேன். அவை தொகுப்புகள், வகுப்புகள், முறைகள், புலங்கள் மற்றும் அளவுருக்களுடன் பயன்படுத்தப்படுகின்றன.
சிறுகுறிப்புகள் எவ்வாறு செயல்படுகின்றன என்பதைப் புரிந்து கொள்ள, முதலில் மார்க்கர் இடைமுகத்தின் கருத்தைப் பற்றி அறிந்து கொள்வோம். ஜாவாவின் வருகைக்குப் பிறகு, டெவலப்பர்கள் சில செயல்களைச் செய்ய வகுப்புகளைக் குறிக்க எப்போதும் ஒரு வழி தேவை.
ஜாவா 5 க்கு முன்பு, இடைமுகங்கள் செய்ய வேண்டும் என்று நாம் எதிர்பார்ப்பதைச் செய்யாத ஒரு இடைமுகத்தை அவர்கள் பயன்படுத்தினர். அதற்கு முறைகளும் இல்லை ஒப்பந்தமும் இல்லை. இது ஒரு வகுப்பை ஏதோ ஒரு வகையில் சிறப்பு எனக் குறித்தது.
அத்தகைய இடைமுகம் மார்க்கர் இடைமுகம் என்று அழைக்கப்பட்டது. ஜேவிஎம், கம்பைலர் அல்லது சில லைப்ரரிக்கான வகுப்புகளைக் குறிப்பதே இதன் நோக்கம் என்று பெயரிலிருந்து நீங்கள் யூகிக்கலாம். Serializable போன்ற சில மார்க்கர் இடைமுகங்கள் உள்ளன. இந்த மார்க்கர் இடைமுகம், ஒரு வகுப்பின் நிகழ்வுகளை வரிசைப்படுத்தலாம் என்பதைக் குறிப்பிடலாம்.
நாம் பார்த்தபடி, சிறுகுறிப்புகளை அறிமுகப்படுத்திய பிறகும் மார்க்கர் இடைமுகங்கள் தொடர்ந்து வாழ்கின்றன.
குறிப்பான் இடைமுகங்களுக்கு எதிரான சிறுகுறிப்புகள்:
@MyAnnotation
public class MyClass {}
public class MyClass implements MarkerInterface {}
இரண்டு அணுகுமுறைகளும் ஒரே நோக்கத்தைக் கொண்டுள்ளன, ஆனால் அவற்றின் செயல்பாட்டில் தெளிவான வேறுபாடு உள்ளது. எடுத்துக்காட்டாக, ஒரு வகுப்பு ஒரு குறிப்பிட்ட வகையைச் சேர்ந்தது என்பதைக் குறிக்கும் இடைமுகம் மற்றும் சிறுகுறிப்பைக் கவனியுங்கள்.
நாங்கள் ஒரு இடைமுகத்தைப் பயன்படுத்தினால், வகுப்பைக் குறிக்கிறோம். நாங்கள் அதை தவறாகப் பயன்படுத்தினால், பிழை ஏற்பட்டால், தொகுப்பில் உள்ள சிக்கலைக் கண்டுபிடிப்போம், மேலும் நிரல் இயங்காது.
சிறுகுறிப்புகளுடன், எல்லாம் அவ்வளவு எளிதல்ல: இங்கே இயக்க நேரத்தில் பிழை கண்டறியப்படும், அதாவது நிரல் தொடங்கும், ஆனால், ஆச்சரியப்படத்தக்க வகையில், அது முடிவடையாது.
எதிர்கால பயன்பாட்டிற்காக ஒரு வகுப்பைக் குறிக்க வேண்டும் என்றால், அதன் நிகழ்வுகள் ஒரு குறிப்பிட்ட முறைக்கு அனுப்பப்பட வேண்டும் என்பதை நினைவில் கொள்க:
public class MyInteger implements Sum {}
interface Sum {};
public static void main(String[] args) throws IOException {
increase(new MyInteger());
}
public static void increase(Sum count) {
// TODO
}
மார்க்கர் இடைமுகம் இங்கு சிறப்பாகச் செயல்படுகிறது.
சிறுகுறிப்புகள் ஆதரிக்கும் அளவுருக்கள் போன்ற மேலும் ஏதாவது தேவைப்படும்போது சிறுகுறிப்புகளைப் பயன்படுத்துவது சிறந்தது.
JDK இல் உள்ள நிலையான சிறுகுறிப்புகளைப் பார்ப்போம்:
சிறுகுறிப்பு | விளக்கம் | உதாரணமாக |
---|---|---|
@ஓவர்ரைடு | ஒரு முறை ஒரு சூப்பர் கிளாஸ் முறையை மீறுகிறது அல்லது ஒரு சுருக்க வகுப்பு அல்லது இடைமுகத்தின் முறையை செயல்படுத்துகிறது என்பதைக் குறிப்பிடுகிறது. |
|
@நிறுத்தப்பட்டது | குறியீடு நிறுத்தப்பட்டதாகக் குறிக்கிறது. |
|
@அடக்கு எச்சரிக்கைகள் | சிறுகுறிப்பு உறுப்புக்கான கம்பைலர் எச்சரிக்கைகளை முடக்குகிறது. நீங்கள் பல வகை எச்சரிக்கைகளை முடக்க வேண்டுமானால், அவை சுருள் பிரேஸ்களில் இணைக்கப்பட வேண்டும், எடுத்துக்காட்டாக @SuppressWarnings({"சரிபார்க்கப்படாதது", "cast"}) . |
இந்த எடுத்துக்காட்டில், வரையறுக்கப்பட்ட வகை (பொது வகை) இல்லாத பட்டியலில் சேர்க்க முயற்சிக்கிறோம். தொகுப்பாளர் இதைப் பற்றி எச்சரிப்பார். இது மிகவும் பயனுள்ளதாக இருக்கும், ஆனால் சில நேரங்களில் பல "எச்சரிக்கைகள்" உள்ளன மற்றும் அவை சத்தமாக இருக்கலாம். நீங்கள் இந்த முறை சிறுகுறிப்பைப் பயன்படுத்தலாம் மற்றும் ஒரு வகை கம்பைலர் எச்சரிக்கையை ஒரு வாதமாக குறிப்பிடலாம். குறிப்பான்கள் நிறைய உள்ளன, எனவே அவை அனைத்தையும் நினைவில் வைத்துக் கொள்வது பற்றி கவலைப்பட வேண்டாம் - எதைச் சேர்க்க வேண்டும் என்பதை IDEA உங்களுக்குச் சொல்லும். பல வாதங்களைக் கொண்ட மற்றொரு எடுத்துக்காட்டு:
|
GO TO FULL VERSION