சிறுகுறிப்புகளின் முக்கியப் பலன், ஏற்கனவே JDK இல் உள்ள நிலையானவற்றைப் பயன்படுத்துவதால் வரவில்லை. அதே நேரத்தில், உங்கள் சொந்த சிறுகுறிப்பை உருவாக்குவது அரிதாகவே உள்ளது. ஆனால் நாம் ஒரு பெரிய அமைப்பை உருவாக்கினால் அல்லது தனி நூலகத்தை உருவாக்கினால், கட்டடக்கலை மட்டத்தில், எங்கள் சொந்த சிறுகுறிப்பை செயல்படுத்துவது நிச்சயமாக ஈவுத்தொகையைத் தரும்.

ஒரு சிறுகுறிப்பை உருவாக்க முயற்சிப்போம்.

இதைச் செய்ய, ஒரு கோப்பை உருவாக்கவும், ஆனால் வகுப்பு அல்லது இடைமுகத்தை எழுதுவதற்குப் பதிலாக , @interface என்று எழுதவும் . இது எங்கள் சிறுகுறிப்புக்கான கோப்பாக இருக்கும். சிறுகுறிப்பின் உள் அமைப்பு இடைமுகத்தைப் போன்றது.

public @interface Sum {
   int sum() default 0;
}

@interface இது ஒரு சிறுகுறிப்பு என்பதைக் குறிக்கிறது,
இயல்புநிலை அளவுரு ஒரு குறிப்பிட்ட இயல்புநிலை மதிப்பைக் கொண்டிருக்கும்.

தா-டா! சிறுகுறிப்பை உருவாக்கினோம்! கோட்பாட்டளவில் நாம் ஏற்கனவே இதைப் பயன்படுத்தலாம், ஆனால் முதலில் அதை உள்ளமைப்பது நல்லது.

உள்ளமைவு இல்லாமல், எங்கள் சிறுகுறிப்பு எதற்கும் (வகுப்புகள், முறைகள், பண்புக்கூறுகள், முதலியன) பயன்படுத்தப்படலாம், எனவே இந்த கட்டத்தில் அதைப் பயன்படுத்துவதில் அர்த்தமில்லை. இது விசித்திரமாகத் தோன்றினாலும், நமது சிறுகுறிப்பு மற்ற சிறுகுறிப்புகளுடன் சிறுகுறிப்பு செய்யப்பட வேண்டும்!

@Target உடன் தொடங்குவோம் .

@Target சிறுகுறிப்பு (ஜாவா 1.5 முதல் தொடர்புடையது) சிறுகுறிப்பைப் பயன்படுத்துவதற்கான திறனைக் கட்டுப்படுத்துகிறது. குறிப்பிட்ட நிலைக்குப் பயன்பாட்டைக் கட்டுப்படுத்த, எந்த வகைகளுக்குப் பயன்படுத்தலாம் என்பதைக் குறிக்க @Target சிறுகுறிப்புக்கு ஒரு வாதத்தை அனுப்ப வேண்டும் . பொதுவாகப் பயன்படுத்தப்படும் சில வகைகள் இங்கே:

@Target(ElementType.PACKAGE) தொகுப்புகளுக்கு
@Target(ElementType.TYPE) வகுப்புகளுக்கு
@Target(ElementType.CONSTRUCTOR) கட்டமைப்பாளர்களுக்கு
@Target(ElementType.METHOD) முறைகளுக்கு
@Target(ElementType.FIELD) ஒரு வகுப்பில் உள்ள பண்புக்கூறுகளுக்கு (மாறிகள்).
@Target(ElementType.PARAMATER) முறை அளவுருக்களுக்கு
@Target(ElementType.LOCAL_VARIABLE) உள்ளூர் மாறிகளுக்கு

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

@Target({ ElementType.PARAMETER, ElementType.LOCAL_VARIABLE })

உள்ளமைவின் அடுத்த முக்கியமான பகுதி @Retention சிறுகுறிப்பு ஆகும்.

இந்த சிறுகுறிப்பு குறியீடு வாழ்க்கைச் சுழற்சியின் பகுதிகளைக் குறிக்கிறது, அதில் எங்கள் சிறுகுறிப்பு கிடைக்கும்:

தக்கவைப்புக் கொள்கை.SOURCE SOURCE தக்கவைப்புக் கொள்கையுடன் குறிக்கப்பட்ட சிறுகுறிப்புகள் இயக்க நேரத்தில் நிராகரிக்கப்படும்.
தக்கவைப்பு கொள்கை.CLASS CLASS தக்கவைப்புக் கொள்கையுடன் குறிக்கப்பட்ட சிறுகுறிப்புகள் .class கோப்பில் எழுதப்படும் , ஆனால் இயக்க நேரத்தில் அகற்றப்படும்.
தக்கவைத்தல் கொள்கை.RUNTIME RUNTIME தக்கவைப்புக் கொள்கையுடன் குறிக்கப்பட்ட சிறுகுறிப்புகள் ரன் நேரத்தில் தொடரும் மற்றும் இயக்க நேரத்தில் எங்கள் நிரலில் அணுகலாம்.

உள்ளமைவுக்கு நீங்கள் பயன்படுத்தக்கூடிய இன்னும் சில குறிப்புகள் உள்ளன:

சிறுகுறிப்பு மதிப்பு
@மரபுவழி ஒரு பெறப்பட்ட வகுப்பானது சிறுகுறிப்பை பெற்றோர் வகுப்பின் செயல்படுத்தலைப் பெறுகிறது என்பதைக் குறிக்கிறது.
@ ஆவணப்படுத்தப்பட்டது உருவாக்கப்பட்ட Javadoc ஆவணத்தில் சிறுகுறிப்பு சேர்க்கப்படும் என்பதை இது குறிக்கிறது.

இப்போது எங்கள் சொந்த சிறுகுறிப்பை உருவாக்க முயற்சிப்போம்.

வகுப்புகள் மற்றும் முறைகளுக்கான சிறுகுறிப்பை உருவாக்குவோம், மேலும் குறியீட்டின் ஆசிரியர் மற்றும் பதிப்பு பற்றிய தகவலைக் கொண்டுள்ளோம்:

@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Info {
   String author() default "Author";
   String version() default "0.0";
}

முறைகள் மற்றும் வகுப்புகளுக்கு எங்கள் சிறுகுறிப்பைப் பயன்படுத்தலாம். எங்கள் சிறுகுறிப்பு மெட்டாடேட்டா இயக்க நேரத்தில் கிடைக்கும். எங்கள் சிறுகுறிப்பு அளவுருக்களுக்கு கவனம் செலுத்துங்கள்: நாம் இரண்டு வாதங்களை (ஆசிரியர் மற்றும் பதிப்பு) வழங்கலாம் அல்லது அவற்றைத் தவிர்க்கலாம். நாம் அவற்றைத் தவிர்த்துவிட்டால், குறிப்பிட்ட இயல்புநிலை மதிப்புகள் ( இயல்புநிலை "ஆசிரியர்" மற்றும் இயல்புநிலை "0.0" ) பயன்படுத்தப்படும்.

அளவுருக்களுக்கான இயல்புநிலை மதிப்பை நாம் குறிப்பிட வேண்டியதில்லை என்பது குறிப்பிடத்தக்கது. இந்த வழக்கில், அளவுரு கட்டாயமாகிறது.

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

எங்கள் சிறுகுறிப்பை சில வகுப்புகளுக்குப் பயன்படுத்துவோம்:

@Info
public class MyClass1 {
   @Info
   public void myClassMethod() {}
}

@Info(version = "2.0")
public class MyClass2 {
   @Info(author = "Anonymous")
   public void myClassMethod() {}
}

@Info(author = "Anonymous", version = "2.0")
public class MyClass3 {
   @Info(author = "Anonymous", version = "4.0")
   public void myClassMethod() {}
}