এক্সটেনসিবল টীকাগুলি কার্যকরভাবে অন্য ধরণের সিস্টেম নির্দিষ্টকরণ এবং রক্ষণাবেক্ষণের বোঝা যুক্ত করবে। এবং এটি একটি মোটামুটি অনন্য টাইপ সিস্টেম হবে, সুতরাং আপনি কেবল একটি OO ধরণের দৃষ্টান্ত প্রয়োগ করতে পারেন না।
আপনি যখন কোনও টীকাতে বহুরূপীকরণ এবং উত্তরাধিকার পরিচয় করিয়ে দিন তখন সমস্ত বিষয় বিবেচনা করুন (উদাহরণস্বরূপ যখন সাব-টিকাটি মেটা-টীকাগুলি যেমন ধরে রাখার মতো পরিবর্তনগুলি পরিবর্তন করে?)
এবং এই সমস্ত যুক্ত জটিলতা কি ব্যবহারের ক্ষেত্রে?
আপনি জানতে চান যে প্রদত্ত টিকাটি কোনও বিভাগের অন্তর্ভুক্ত?
এটা চেষ্টা কর:
@Target(ElementType.ANNOTATION_TYPE)
public @interface Category {
String category();
}
@Category(category="validator")
public @interface MyFooBarValidator {
}
যেমন আপনি দেখতে পাচ্ছেন, সরবরাহিত সুবিধা ব্যবহার করে অনায়াসে আপনি সহজেই দলবদ্ধ এবং শ্রেণিবদ্ধ করতে পারেন।
সুতরাং, জাভা ভাষার সাথে মেটা-টাইপ টাইপ সিস্টেম চালু না করার কারণ হ'ল কেআইএসএস ।
[পিএস সম্পাদনা]
আমি স্ট্রিংটি কেবল প্রদর্শনের জন্য এবং একটি মুক্ত সমাপ্ত মেটা টীকাটি দেখার জন্য ব্যবহার করেছি। আপনার নিজস্ব প্রদত্ত প্রকল্পের জন্য, আপনি স্পষ্টতই বিভাগের ধরণের এনাম ব্যবহার করতে পারেন এবং প্রদত্ত টীকায় একাধিক বিভাগ ("একাধিক উত্তরাধিকার") নির্দিষ্ট করতে পারেন। মনে রাখবেন যে মানগুলি সম্পূর্ণ বোগাস এবং কেবল প্রদর্শনের উদ্দেশ্যে:
@Target(ElementType.ANNOTATION_TYPE)
public @interface Category {
AnnotationCategory[] category();
}
public enum AnnotationCategory {
GENERAL,
SEMANTICS,
VALIDATION,
ETC
}
@Category(category={AnnotationCategory.GENERAL, AnnotationCategory.SEMANTICS})
public @interface FooBarAnnotation {
}
java.lang.annotation.Annotation
, অর্থাত্ কোনও টীকাটি হ'লinstanceof
যদিও এই সত্যটি স্পষ্টভাবে ঘোষণা করা হয়নি।