Built-in এবং Custom Annotations তৈরি

Kotlin এর Annotations এবং Reflection - কটলিন (Kotlin) - Mobile App Development

340

Built-in এবং Custom Annotations তৈরি

কটলিনে Annotations একটি গুরুত্বপূর্ণ ফিচার, যা কোডের বিভিন্ন অংশকে মেটাডেটা প্রদান করে। এটি কম্পাইলার, রানটাইম বা লাইব্রেরি দ্বারা বিশেষভাবে ব্যবহার করা হয়। Built-in annotations যেমন @Deprecated, @Override, এবং @JvmField ইতোমধ্যে কটলিনে বিদ্যমান। Custom annotations তৈরি করে আপনি আপনার প্রয়োজন অনুযায়ী নতুন মেটাডেটা তৈরি করতে পারেন। নিচে Built-in এবং Custom Annotations সম্পর্কে বিস্তারিত আলোচনা করা হলো।


১. Built-in Annotations

কটলিনে কিছু Built-in annotations রয়েছে, যা সাধারণত কিছু নির্দিষ্ট কার্যকারিতার জন্য ব্যবহৃত হয়।

i) @Deprecated

@Deprecated annotation একটি এলিমেন্ট বা ফাংশনকে চিহ্নিত করে যে এটি ব্যবহৃত হতে পারে কিন্তু এটি আর সুপারিশ করা হয় না এবং ভবিষ্যতে সরিয়ে ফেলা হতে পারে।

উদাহরণ:

@Deprecated("Use newFunction() instead", ReplaceWith("newFunction()"))
fun oldFunction() {
    println("This is an old function.")
}

fun newFunction() {
    println("This is the new function.")
}

fun main() {
    oldFunction() // এটি একটি ডিপ্রিকেটেড ফাংশন কল করবে
}

ব্যাখ্যা:

  • এখানে oldFunction ডিপ্রিকেটেড, এবং এর পরিবর্তে newFunction ব্যবহারের জন্য সুপারিশ করা হয়েছে।

ii) @JvmField

@JvmField annotation ব্যবহার করে আপনি কটলিন প্রোপার্টি প্রকাশ করতে পারেন যাতে এটি সরাসরি জাভা ফিল্ড হিসেবে ব্যবহার করা যায়। এটি কটলিনের getter/setter অতিক্রম করে।

উদাহরণ:

class Example {
    @JvmField
    var number: Int = 10
}

ব্যাখ্যা:

  • এখানে @JvmField ব্যবহার করে number প্রোপার্টিটি জাভা ফিল্ড হিসেবে প্রকাশ করা হয়েছে, ফলে জাভা থেকে সরাসরি এটি অ্যাক্সেস করা যাবে।

২. Custom Annotations

Custom annotations তৈরি করতে, আপনাকে annotation টাইপ ঘোষণা করতে হবে। কটলিনে, @Target, @Retention, এবং অন্যান্য মেটাডেটা ব্যবহার করে annotation কাস্টমাইজ করা যায়।

i) Custom Annotation তৈরি

@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION)
@Retention(AnnotationRetention.RUNTIME)
annotation class MyCustomAnnotation(val info: String)

ব্যাখ্যা:

  • @Target ব্যবহার করে আপনি চিহ্নিত করতে পারেন যে এই annotation কোন ধরনের এলিমেন্টে ব্যবহার করা যাবে (যেমন ক্লাস, ফাংশন, প্রোপার্টি)।
  • @Retention ব্যবহার করে চিহ্নিত করা হয় যে annotation কবে পর্যন্ত ধরে রাখা হবে (যেমন SOURCE, BINARY, RUNTIME)।

ii) Custom Annotation ব্যবহার

@MyCustomAnnotation("This is a custom annotation")
class MyClass {
    @MyCustomAnnotation("Method annotation")
    fun myFunction() {
        println("Function with custom annotation.")
    }
}

ব্যাখ্যা:

  • এখানে MyClass এবং myFunctionMyCustomAnnotation ব্যবহার করা হয়েছে।

iii) Custom Annotation-এর তথ্য পড়া

Custom annotation ব্যবহার করে যে তথ্য পড়া যায়, তার উদাহরণ:

fun main() {
    val annotations = MyClass::class.annotations
    for (annotation in annotations) {
        if (annotation is MyCustomAnnotation) {
            println("Class annotation info: ${annotation.info}")
        }
    }

    val method = MyClass::class.java.methods.first()
    val methodAnnotations = method.annotations
    for (annotation in methodAnnotations) {
        if (annotation is MyCustomAnnotation) {
            println("Method annotation info: ${annotation.info}")
        }
    }
}

ব্যাখ্যা:

  • এখানে MyClass এর উপর লাগানো annotation-এর তথ্য পড়া হয়েছে এবং myFunction এর annotation সম্পর্কে তথ্য বের করা হয়েছে।

উপসংহার

কটলিনে Built-in এবং Custom Annotations কোডে মেটাডেটা যোগ করতে ব্যবহৃত হয়, যা প্রোগ্রামিংয়ের বিভিন্ন প্রেক্ষাপটে কাজ করে। Built-in annotations যেমন @Deprecated এবং @JvmField ডেভেলপমেন্টে সাহায্য করে, যখন Custom annotations আপনার নিজস্ব মেটাডেটা তৈরি করতে এবং ব্যবহারে সহায়তা করে।

Content added By
Promotion

Are you sure to start over?

Loading...