Loading...

Kotlin in Hindi – Annotations

  • Introduction to kotlin annotations in Hindi
  • Kotlin meta annotations in Hindi
  • Example of kotlin annotations in Hindi

Introduction to Kotlin Annotations

Kotlin में annotation code के metadata attach करने का एक माध्यम है। Metadata code से संबधित जानकारी होती है जो अपरिचित programmer द्वारा आसानी से समझी जा सकती है और code के उपयोग में सहायक होती है।

annotation Modifier

Annotation define करने के लिए annotation modifier का प्रयोग किया जाता है। उदाहरण के लिए किसी class के लिए annotation इस प्रकार define किया जा सकता है। 

annotation class annotClass

यँहा पर annotClass एक annotation class है।

Meta Annotations

Annotation के अतिरिक्त attributes define करने के लिए annotation class को भी meta annotations द्वारा annotate किया जाता है। Meta annotations को annotation class के declaration से पूर्व define किया जाता है।

  • @Target –  यह  meta annotation उन सम्भावित elements को बताता है जो annotation के साथ annotate किये जा सकते है। 
  • @Retention – यह meta annotation बताता है की, annotation को compile की गयी class file में store किया गया है या नहीं और यह reflection के द्वारा runtime पर visible होगी या नहीं। By default ये दोनों ही true होती है। 
  • @Repetable – यह meta annotation एक element के साथ बार बार वही annotation उपयोग करने की अनुमति देता है। 
  • @MustBeDocumented – यह meta annotation बताता है की annotation public API का हिस्सा है और generate किये हुए API documentation में दिखाए गए class और method में include किया जाना चाहिए। 

इन meta annotations के साथ आप ऊपर दी गयी annotClass को दुबारा इस प्रकार define कर सकते है।

@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.EXPRESSION)
@Retention(AnnotationRetention.SOURCE)
@MustBeDocumented
annotation class annotClass

Using Annotations

Annotation class के साथ normal class और function को इस प्रकार define किया जा सकता है। 

@annotClass class myClass
{
    @annotClass fun myFunction(@annotClass num: Int): Int
    {
         return (@annotClass 1)
    }
}

जैसा की आप देख सकते है यह एक आसानी से समझ आने योग्य declaration है। Class और function को annotation class से prefix किया गया है और parameters और return value को भी annotation class के साथ define किया गया है।

जिन elements को annotation से define किया जाता है वे उसी annotation के आधार पर compiler द्वारा treat किये जाते है। 

Annotating Primary Constructor

Primary constructor को annotate करने के लिए constructor declaration में constructor keyword को add करना होता है। इस keyword के पूर्व ही annotation को add किया जाता है। 

class myClass @Inject constructor(parameters)
{
 
}

ऊपर दिए गए code में constructor keyword से पूर्व @Inject annotation का प्रयोग करके primary constructor को annotate किया गया है।

Annotating Property Accessors

Annotations के द्वारा आप property accessors को भी annotate कर सकते है। इसके लिए आप simply accessors से पूर्व annotation define करते है।

class myClass
{
   var temp: Int = x
    @Inject set
     …
}

Annotating Lambdas

Kotlin में lambdas को भी annotate किया जा सकता है। Annotation को method body से पूर्व invoke() method पर apply किया जाता है।

annotation class annotLamnda val x = @annotLambda {
 //lambda body
}

Annotation Constructors

Annotations के constructors भी हो सकते है जो parameters accept करते है। उदाहरण के लिए निचे define की गयी annotation class conAnnot को देखिये।

annotation class conAnnot(val name: String)

ऊपर define की गयी conAnnot annotation class का constructor define किया गया है जो argument के रूप में एक string नाम accept करता है।

जब इस annotation class को use किया जायेगा तो annotation define करने के साथ argument भी pass किया जायेगा। जैसा की निचे दिखाया गया है।

@conAnnot(“Best Hindi Tutorials”) class myClass
{
 
}

Allowed Parameter Types for Annotation Constructors

Annotation constructors में निचे दिए जा रहे type के parameters ही allowed है।

  • Primitive types, जो की java में भी primitive types है। 
  • Strings 
  • Class 
  • Enums 
  • Annotations 
  • ऊपर दिए गए types का array 

Nullable types को annotation constructor में parameter के रूप में नहीं use किया जा सकता है। यदि आप annotation को parameter के रूप में pass कर रहे तो इसके लिए उसे @symbol से prefix करने की आवश्यकता नहीं है।

यदि आप एक class को parameter के रूप में pass करना चाहते है तो इसके लिए आपको kotlin KClass use कर सकते है।

Use-site Targets

जब kotlin code byte code में generate किया जाता है तो kotlin के एक element से कई java element generate हो जाते है। ऐसे में annotate करने के लिए बहुत सी locations available हो जाती है। Annotation के पूर्ण रूप से कार्य करने के लिए उन सभी elements को भी annotate किया जाना आवश्यक होता है। 

लेकिन ऐसा code के byte code में generate होने के बाद नहीं किया जा सकता है। आप पहले ही यह specify कर सकते है की एक annotate किया जा चुका element byte code में किस प्रकार generate होगा। 

इस प्रकार कई java targets को annotate किया जा सकता है। 

  • file 
  • property 
  • field 
  • get 
  • set 
  • receiver 
  • param 
  • set 
  • param 
class Example(@field:Ann val foo,@get:Ann val bar, @param:Ann val quux)

ऊपर दिए गए code में java के field, getter और constructor parameter को annotate करने के instructions compiler को दिए गए है। 

Java Annotations

Java annotations kotlin से पूरी तरह compatible है। Java annotations को kotlin code में use किया जा सकता है। निचे दिए जा रहे code snippet में java annotations को kotlin में use करना बताया जा रहा है।

// Java Annotation
public @interface Ann
{
    int intValue();
    String stringValue();
}
// Kotlin Annotation
@Ann(intValue = 1, stringValue = “abc”) class C 

Previous: Kotlin Ranges
Next: Kotlin Equality