logo

הערות Java

Java ביאור הוא תג המייצג את מטא נתונים כלומר מצורף עם מחלקה, ממשק, שיטות או שדות כדי לציין מידע נוסף שניתן להשתמש בו על ידי מהדר Java ו-JVM.

הערות ב-Java משמשות כדי לספק מידע נוסף, כך שזו אפשרות חלופית עבור ממשקי XML ו-Java סמן.

ראשית, נלמד כמה הערות מובנות ואז נמשיך ליצור ולהשתמש בהערות מותאמות אישית.


הערות Java מובנות

ישנן מספר הערות מובנות ב-Java. חלק מהביאורים מוחלים על קוד Java וחלק על הערות אחרות.

הערות Java מובנות בשימוש בקוד Java

  • @עקוף
  • @SuppressWarnings
  • @ הוצא משימוש

הערות Java מובנות בשימוש בהערות אחרות

  • @יַעַד
  • @הַחזָקָה
  • @ירש
  • @מְתוֹעָד

הבנת הערות מובנות

בואו נבין תחילה את ההערות המובנות.

@עקוף

הערת @Override מבטיחה ששיטת המשנה עוקפת את שיטת מחלקת האב. אם זה לא כך, מתרחשת שגיאת זמן קומפילציה.

לפעמים, אנחנו עושים את הטעות המטופשת כמו שגיאות כתיב וכו'. לכן, עדיף לסמן את ההערה @Override המספקת ביטחון שהשיטה מבוטלת.

shweta tiwari
 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

הערת @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'), היא תציג אזהרה בזמן ההידור מכיוון שאנו משתמשים באיסוף לא גנרי.


@ הוצא משימוש

ביאור מבוטל מציין ששיטה זו הוצאה משימוש ולכן המהדר מדפיס אזהרה. זה מודיע למשתמש שהוא עשוי להיות מוסר בגרסאות עתידיות. אז עדיף לא להשתמש בשיטות כאלה.

בסדר
 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

הערות Java מותאמות אישית או Java הערות המוגדרות על ידי משתמש קלות ליצירה ולשימוש. ה @מִמְשָׁק אלמנט משמש להכרזה על הערה. לדוגמה:

 @interface MyAnnotation{} 

כאן, MyAnnotation הוא שם ההערה המותאמת אישית.

נקודות לזכור עבור חתימת הערות מותאמת אישית ב-Java

יש כמה נקודות שצריך לזכור על ידי המתכנת.

  1. השיטה לא צריכה לכלול סעיפי זריקה
  2. השיטה צריכה להחזיר אחד מהאפשרויות הבאות: סוגי נתונים פרימיטיביים, מחרוזת, מחלקה, enum או מערך של סוגי נתונים אלה.
  3. לשיטה לא צריך להיות פרמטר כלשהו.
  4. עלינו לצרף @ ממש לפני מילת מפתח בממשק כדי להגדיר הערה.
  5. זה עשוי להקצות ערך ברירת מחדל לשיטה.

סוגי הערות

ישנם שלושה סוגים של הערות.

  1. הערת סמן
  2. הערה בעלת ערך יחיד
  3. הערה מרובת ערכים
סוגי הערות Java

1) הערת סמן

ביאור שאין לו שיטה, נקרא הערת סמן. לדוגמה:

 @interface MyAnnotation{} 

ה-@Override ו-@Deprecated הם הערות סמנים.


2) ביאור בעל ערך יחיד

הערה שיש לה שיטה אחת, נקראת הערה בעלת ערך יחיד. לדוגמה:

 @interface MyAnnotation{ int value(); } 

אנו יכולים לספק גם את ערך ברירת המחדל. לדוגמה:

 @interface MyAnnotation{ int value() default 0; } 

כיצד ליישם הערה בעלת ערך יחיד

בוא נראה את הקוד ליישום הערת הערך היחיד.

 @MyAnnotation(value=10) 

הערך יכול להיות כל דבר.


3) ביאור רב ערכים

הערה שיש לה יותר משיטה אחת, נקראת הערה מרובה ערכים. לדוגמה:

java char ל-int
 @interface MyAnnotation{ int value1(); String value2(); String value3(); } } 

אנו יכולים לספק גם את ערך ברירת המחדל. לדוגמה:

 @interface MyAnnotation{ int value1() default 1; String value2() default &apos;&apos;; String value3() default &apos;xyz&apos;; } 

כיצד ליישם הערה מרובה ערכים

בוא נראה את הקוד ליישום ההערה מרובת הערכים.

 @MyAnnotation(value1=10,value2=&apos;Arun Kumar&apos;,value3=&apos;Ghaziabad&apos;) 

הערות מובנות בשימוש בהערות מותאמות אישית ב-java

  • @יַעַד
  • @הַחזָקָה
  • @ירש
  • @מְתוֹעָד

@יַעַד

@יַעַד תג משמש כדי לציין באיזה סוג, ההערה משמשת.

הערת java.lang. ElementType enum מכריז על קבועים רבים כדי לציין את סוג האלמנט שבו יש להחיל את ההערה כגון TYPE, METHOD, FIELD וכו'. בוא נראה את הקבועים של ElementType enum:

סוגי אלמנטיםהיכן ניתן ליישם את ההערה
סוּגמחלקה, ממשק או ספירה
שדהשדות
שיטהשיטות
בַּנַאִיבנאים
LOCAL_VARIABLEמשתנים מקומיים
ANNOTATION_TYPEסוג הערה
פָּרָמֶטֶרפָּרָמֶטֶר

דוגמה לציון ביאור עבור כיתה

 @Target(ElementType.TYPE) @interface MyAnnotation{ int value1(); String value2(); } 

דוגמה לציון הערה עבור מחלקה, שיטות או שדות

 @Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD}) @interface MyAnnotation{ int value1(); String value2(); } 

@הַחזָקָה

@הַחזָקָה ההערה משמשת כדי לציין באיזו רמה ההערה תהיה זמינה.

מדיניות שמירהזמינות
RetentionPolicy.SOURCEמתייחס לקוד המקור, שנמחק במהלך ההידור. זה לא יהיה זמין בכיתה הקומפילית.
RetentionPolicy.CLASSמתייחס לקובץ .class, זמין ל-Java מהדר אך לא ל-JVM. זה כלול בקובץ הכיתה.
RetentionPolicy.RUNTIMEמתייחס לזמן הריצה, זמין ל-Java מהדר ו-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(&apos;hello annotation&apos;);} } //Accessing annotation class TestCustomAnnotation1{ public static void main(String args[])throws Exception{ Hello h=new Hello(); Method m=h.getClass().getMethod(&apos;sayHello&apos;); MyAnnotation manno=m.getAnnotation(MyAnnotation.class); System.out.println(&apos;value is: &apos;+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 מסמן את ההערה להכללה בתיעוד.