לדלג לתוכן

Java annotation

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

בשפת התכנות Java, אנוטציהאנגלית: annotation; בתרגום מילולי: "הערת הסבר" או "ביאור") היא סוג של מנגנון תחבירי להוספת metadata לקוד המקור. ניתן להוסיף אנוטציות למחלקות, מתודות, משתנים, פרמטרים ו-packages. שלא כמו תגיות Javadoc, אנוטציות ג'אווה יכולות להיות רפלקטיביות בכך שניתן לשלב אותן בקובצי class הנוצרים על ידי המהדר, והן ניתנות לאחסון על ידי המכונה הוירטואלית של ג'אווה (JVM), כך שניתן יהיה לאחזר אותן בזמן ריצה. תמיכה באנוטציות התווספה החל מגרסה 1.5 של ה-JDK

השימוש באנוטציות נפוץ בתשתיות תוכנה (כדוגמת Spring ,Hibernate ו-EJB) כאמצעי נוח להוספת פונקציונליות למחלקות ומתודות המוגדרות על ידי המשתמש. ללא שימוש באנוטציות, על מנת ליישם פונקציונליות נוספת של תשתית התוכנה, יש להצהיר עליה במקור חיצוני (כדוגמת קובץ XML לקונפיגורציה), או לתכנת זאת באמצעות קריאות API יעודיות. האנוטציות לכשעצמן הן לא מתודות והן לא יעשו שום עבודה. במקום זאת, האובייקט של המחלקה מועבר בזמן ריצה למימוש של תשתית התוכנה, שם האנוטציות נקראות ומביאות לביצוע הפונקציונליות הנוספת.

אנוטציות מובנות

ג'אווה מגדירה קבוצת אנוטציות המובנות בתוך השפה:

אנוטציות אשר מיושמות על קוד ג'אווה:

  • Override@ - בודקת שהמתודה דורסת מתודה אחרת. גורמת לשגיאת קומפילציה אם המתודה לא נמצאת באחת מהמחלקות שיורשים ממנה או באחד מהממשקים שהמחלקה מממשת.
  • Deprecated@ - מציינת שהמתודה מיושנת. גורמת לאזהרת קומפילציה במידה ומשתמשים במתודה.
  • SuppressWarnings@ - מורה למהדר להשתיק את אזהרות זמן ההידור אשר מצויינות בפרמטרים של האנוטציה.

אנוטציות אשר מיושמות על אנוטציות אחרות:

  • Retention@ - מציינת כיצד האנוטציה המסומנת תישמר: רק בקוד המקור, תעבור הידור לתוך המחלקה, או תהיה זמינה בזמן ריצה באמצעות reflection.
  • Documented@ - מסמנת אנוטציה אחרת לצורך הכלה בתיעוד.
  • Target@ - מציינת על אילו אלמנטים של ג'אווה ניתן ליישם האנוטציה המסומנת.
  • Inherited@ - מציינת שהאנוטציה האחרת תעבור בירושה למחלקות שיורשות מהמחלקה המסומנת על ידי האנוטציה (כברירת מחדל, אנוטציות אינן עוברות בירושה למחלקות היורשות).

קישורים חיצוניים

  • Annotations - הסבר על אנוטציות במדריך הרשמי לשפת ג'אווה באתר של Oracle (באנגלית)