جافا حاشية. ملاحظة هي العلامة التي تمثل البيانات الوصفية أي مرفقة بفئة أو واجهة أو طرق أو حقول للإشارة إلى بعض المعلومات الإضافية التي يمكن استخدامها بواسطة مترجم Java وJVM.
تُستخدم التعليقات التوضيحية في Java لتوفير معلومات إضافية، لذا فهي خيار بديل لواجهات علامات XML وJava.
أولاً، سوف نتعلم بعض التعليقات التوضيحية المضمنة ثم سننتقل إلى إنشاء التعليقات التوضيحية المخصصة واستخدامها.
المدمج في التعليقات التوضيحية جافا
هناك العديد من التعليقات التوضيحية المضمنة في Java. يتم تطبيق بعض التعليقات التوضيحية على كود Java وبعضها على التعليقات التوضيحية الأخرى.
تعليقات Java التوضيحية المضمنة المستخدمة في كود Java
- @تجاوز
- @قمع تحذيرات
- @إهمال
تعليقات Java التوضيحية المضمنة المستخدمة في التعليقات التوضيحية الأخرى
- @هدف
- @حفظ
- @وارث
- @موثقة
فهم التعليقات التوضيحية المضمنة
دعونا نفهم التعليقات التوضيحية المضمنة أولاً.
@تجاوز
يضمن التعليق التوضيحيOverride أن طريقة الفئة الفرعية تتجاوز طريقة الفئة الأصلية. إذا لم يكن الأمر كذلك، يحدث خطأ في وقت الترجمة.
في بعض الأحيان، نرتكب أخطاء سخيفة مثل الأخطاء الإملائية وما إلى ذلك. لذا، من الأفضل وضع علامة على التعليق التوضيحي @Override الذي يوفر التأكد من تجاوز الطريقة.
أحرف الهروب جافا
class Animal{ void eatSomething(){System.out.println('eating something');} } class Dog extends Animal{ @Override void eatsomething(){System.out.println('eating foods');}//should be eatSomething } class TestAnnotation1{ public static void main(String args[]){ Animal a=new Dog(); a.eatSomething(); }}اختبره الآن
Output:Comple Time Error
@قمع تحذيرات
التعليق التوضيحيSuppressWarnings: يُستخدم لمنع التحذيرات الصادرة عن المترجم.
import java.util.*; class TestAnnotation2{ @SuppressWarnings('unchecked') public static void main(String args[]){ ArrayList list=new ArrayList(); list.add('sonoo'); list.add('vimal'); list.add('ratan'); for(Object obj:list) System.out.println(obj); }}اختبره الآن
Now no warning at compile time.
إذا قمت بإزالة التعليق التوضيحي @SuppressWarnings('unchecked')، فسوف يظهر تحذيرًا في وقت الترجمة لأننا نستخدم مجموعة غير عامة.
@إهمال
تشير التعليقات التوضيحية المهملة إلى أن هذه الطريقة قد تم إهمالها، لذا يطبع المترجم تحذيرًا. ويبلغ المستخدم أنه قد تتم إزالته في الإصدارات المستقبلية. لذا، فمن الأفضل عدم استخدام مثل هذه الأساليب.
خريطة reactjs
class A{ void m(){System.out.println('hello m');} @Deprecated void n(){System.out.println('hello n');} } class TestAnnotation3{ public static void main(String args[]){ A a=new A(); a.n(); }}اختبره الآن
في وقت التجميع:
Note: Test.java uses or overrides a deprecated API. <br> Note: Recompile with -Xlint:deprecation for details.
في وقت التشغيل:
hello n
التعليقات التوضيحية المخصصة لجافا
جافا التعليقات التوضيحية المخصصة أو التعليقات التوضيحية المعرفة من قبل مستخدم Java سهلة الإنشاء والاستخدام. ال @واجهه المستخدم يتم استخدام العنصر للإعلان عن تعليق توضيحي. على سبيل المثال:
@interface MyAnnotation{}
هنا، MyAnnotation هو اسم التعليق التوضيحي المخصص.
النقاط التي يجب تذكرها لتوقيع التعليقات التوضيحية المخصصة لجافا
هناك بعض النقاط التي يجب أن يتذكرها المبرمج.
- يجب ألا تحتوي الطريقة على أي عبارات رمية
- يجب أن تُرجع الطريقة واحدًا مما يلي: أنواع البيانات البدائية، أو السلسلة، أو الفئة، أو التعداد، أو المصفوفة من أنواع البيانات هذه.
- يجب ألا تحتوي الطريقة على أي معلمة.
- يجب أن نعلق @ قبل الكلمة الأساسية للواجهة مباشرةً لتحديد التعليق التوضيحي.
- قد يقوم بتعيين قيمة افتراضية للطريقة.
أنواع الحواشي
هناك ثلاثة أنواع من التعليقات التوضيحية.
- تعليق ماركر
- تعليق توضيحي ذو قيمة واحدة
- تعليق توضيحي متعدد القيم
1) شرح العلامة
يُطلق على التعليق التوضيحي الذي لا يحتوي على طريقة اسم التعليق التوضيحي للعلامة. على سبيل المثال:
@interface MyAnnotation{}
إن @Override و@Deprecated عبارة عن تعليقات توضيحية للعلامات.
2) شرح ذو قيمة واحدة
يُطلق على التعليق التوضيحي الذي يحتوي على طريقة واحدة اسم التعليق التوضيحي ذو القيمة الواحدة. على سبيل المثال:
@interface MyAnnotation{ int value(); }
يمكننا توفير القيمة الافتراضية أيضًا. على سبيل المثال:
رقم إلى سلسلة جافا
@interface MyAnnotation{ int value() default 0; }
كيفية تطبيق التعليق التوضيحي ذو القيمة الواحدة
دعونا نرى الكود لتطبيق التعليق التوضيحي ذو القيمة الفردية.
@MyAnnotation(value=10)
يمكن أن تكون القيمة أي شيء.
3) شرح متعدد القيم
يُطلق على التعليق التوضيحي الذي يحتوي على أكثر من طريقة اسم التعليق التوضيحي متعدد القيم. على سبيل المثال:
@interface MyAnnotation{ int value1(); String value2(); String value3(); } }
يمكننا توفير القيمة الافتراضية أيضًا. على سبيل المثال:
@interface MyAnnotation{ int value1() default 1; String value2() default ''; String value3() default 'xyz'; }
كيفية تطبيق التعليق التوضيحي متعدد القيم
دعونا نرى الكود لتطبيق التعليق التوضيحي متعدد القيم.
@MyAnnotation(value1=10,value2='Arun Kumar',value3='Ghaziabad')
التعليقات التوضيحية المضمنة المستخدمة في التعليقات التوضيحية المخصصة في Java
- @هدف
- @حفظ
- @وارث
- @موثقة
@هدف
@هدف يتم استخدام العلامة لتحديد النوع الذي سيتم استخدام التعليق التوضيحي فيه.
java.lang.annotation. نوع العنصر يعلن التعداد عن العديد من الثوابت لتحديد نوع العنصر الذي سيتم تطبيق التعليق التوضيحي عليه مثل TYPE، METHOD، FIELD وما إلى ذلك. دعونا نرى ثوابت ElementType enum:
أنواع العناصر | حيث يمكن تطبيق الشرح |
---|---|
يكتب | الطبقة أو الواجهة أو التعداد |
مجال | مجالات |
طريقة | طُرق |
البناء | بناة |
متغير محلي | المتغيرات المحلية |
ANNOTATION_TYPE | نوع التعليق التوضيحي |
معامل | معامل |
مثال لتحديد التعليق التوضيحي لفئة ما
@Target(ElementType.TYPE) @interface MyAnnotation{ int value1(); String value2(); }
مثال لتحديد تعليق توضيحي لفئة أو طرق أو حقول
@Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD}) @interface MyAnnotation{ int value1(); String value2(); }
@حفظ
@حفظ يتم استخدام التعليق التوضيحي لتحديد مستوى التعليق التوضيحي الذي سيكون متاحًا.
سياسة الإحتفاظ | التوفر |
---|---|
سياسة الاحتفاظ.SOURCE | يشير إلى الكود المصدري، الذي تم التخلص منه أثناء التجميع. لن يكون متاحًا في الفصل المترجم. |
سياسة الاحتفاظ.CLASS | يشير إلى ملف .class، وهو متاح لمترجم Java ولكن ليس لـ JVM. يتم تضمينه في ملف الفصل. |
سياسة الاحتفاظ.RUNTIME | يشير إلى وقت التشغيل، وهو متاح لمترجم جافا وJVM. |
مثال لتحديد سياسة الاحتفاظ
@Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) @interface MyAnnotation{ int value1(); String value2(); }
مثال على التعليقات التوضيحية المخصصة: إنشاء التعليقات التوضيحية وتطبيقها والوصول إليها
دعونا نرى المثال البسيط لإنشاء التعليقات التوضيحية وتطبيقها والوصول إليها.
أحجام الخطوط اللاتكس
الملف: Test.java
//Creating annotation import java.lang.annotation.*; import java.lang.reflect.*; @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) @interface MyAnnotation{ int value(); } //Applying annotation class Hello{ @MyAnnotation(value=10) public void sayHello(){System.out.println('hello annotation');} } //Accessing annotation class TestCustomAnnotation1{ public static void main(String args[])throws Exception{ Hello h=new Hello(); Method m=h.getClass().getMethod('sayHello'); MyAnnotation manno=m.getAnnotation(MyAnnotation.class); System.out.println('value is: '+manno.value()); }}اختبره الآن
Output:value is: 10
قم بتنزيل هذا المثال
كيف يتم استخدام التعليقات التوضيحية المضمنة في السيناريو الحقيقي؟
في السيناريو الحقيقي، يحتاج مبرمج جافا فقط إلى تطبيق التعليق التوضيحي. لا يحتاج هو/هي إلى إنشاء التعليقات التوضيحية والوصول إليها. يتم إنشاء التعليق التوضيحي والوصول إليه بواسطة موفر التنفيذ. نيابة عن التعليق التوضيحي، يقوم مترجم Java أو JVM بتنفيذ بعض العمليات الإضافية.
@وارث
افتراضيًا، لا يتم توريث التعليقات التوضيحية إلى الفئات الفرعية. يشير التعليق التوضيحيInherited إلى التعليق التوضيحي الذي سيتم توريثه إلى الفئات الفرعية.
@Inherited @interface ForEveryone { }//Now it will be available to subclass also @interface ForEveryone { } class Superclass{} class Subclass extends Superclass{}
@موثقة
@Documented يضع علامة على التعليق التوضيحي لتضمينه في الوثائق.