खोज…


परिचय

एनोटेशन प्रोसेसर कंपाइल समय पर एनोटेशन को स्कैन करने और प्रसंस्करण के लिए एक उपकरण है।

एनोटेशन मेटाडेटा का एक वर्ग है जो कक्षाओं, विधियों, क्षेत्रों, और यहां तक कि अन्य एनोटेशन से जुड़ा हो सकता है। इन एनोटेशन को रनटाइम पर प्रतिबिंबन के माध्यम से और एनोटेशन प्रोसेसर के माध्यम से संकलन समय पर पहुंचने के दो तरीके हैं।

@ नोनल एनोटेशन

public class Foo {
    private String name;
    public Foo(@NonNull String name){...};
    ...
}

यहां @NonNull एनोटेशन है, जो कि एंड्रॉइड स्टूडियो द्वारा संकलित समय को संसाधित करने के लिए आपको चेतावनी देता है कि किसी विशेष फ़ंक्शन को नॉन नल पैरामीटर की आवश्यकता है।

एनोटेशन के प्रकार

एनोटेशन तीन प्रकार के होते हैं।

  1. मार्कर एनोटेशन - एनोटेशन जिसमें कोई विधि नहीं है

    @interface CustomAnnotation {}
    
  1. एकल-मूल्य एनोटेशन - एनोटेशन जिसमें एक विधि है

    @interface CustomAnnotation {  
        int value();  
    }
    
  1. बहु-मूल्य एनोटेशन - एनोटेशन जिसमें एक से अधिक विधि हैं

    @interface CustomAnnotation{  
        int value1();  
        String value2();  
        String value3();  
    }
    

कस्टम एनोटेशन बनाना और उपयोग करना

कस्टम एनोटेशन बनाने के लिए हमें निर्णय लेने की आवश्यकता है

  • टारगेट - जिस पर ये एनोटेशन फील्ड लेवल, मेथड लेवल, टाइप लेवल आदि पर काम करेगा।
  • रिटेंशन - किस स्तर पर एनोटेशन उपलब्ध होगा।

इसके लिए, हमने कस्टम एनोटेशन में बनाया है। इन ज्यादातर इस्तेमाल किए गए लोगों की जांच करें:

@Target

लक्ष्य और इसका क्या अर्थ है

@Retention

अवधारण और इसका क्या अर्थ है

कस्टम एनोटेशन बनाना

@Retention(RetentionPolicy.SOURCE) // will not be available in compiled class   
@Target(ElementType.METHOD) // can be applied to methods only
@interface CustomAnnotation{  
      int value();    
}

कस्टम एनोटेशन का उपयोग करना

class Foo{  
  @CustomAnnotation(value = 1)  // will be used by an annotation processor
  public void foo(){..}  
}

@CustomAnnotation अंदर प्रदान किए गए मूल्य का उपयोग @CustomAnnotation द्वारा किया जाएगा। इसका उपयोग @CustomAnnotation आदि पर कोड उत्पन्न करने के लिए हो सकता है।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow