הערה Java @ SafeVarargs

1. סקירה כללית

במדריך מהיר זה, נסתכל על @ SafeVarargs ביאור.

2. ה @ SafeVarargs ביאור

Java 5 הציג את המושג varargs, או פרמטר שיטה באורך משתנה, כמו גם סוגים פרמטרים.

שילוב אלה יכול לגרום לנו לבעיות:

T סטטי ציבורי [] לא בטוח (אלמנטים T ...) {אלמנטים להחזיר; // לא בטוח! לעולם אל תחזיר מערך varargs פרמטרי} T סטטי ציבורי [] שבור (זרע T) {T [] צמח = לא בטוח (זרע, זרע, זרע); // שבור! זה יהיה אובייקט [] לא משנה מה T הוא מפעל החזרה; } צמח ריק סטטי ציבורי () {מחרוזת [] צמחים = שבור ("זרע"); // ClassCastException}

בעיות אלה הן מסובכות עבור מהדר לאשר, ולכן הוא נותן אזהרות בכל פעם ששניהם משולבים, כמו במקרה של מְסוּכָּן:

אזהרה: [לא מסומן] זיהום ערימה אפשרי מ- vararg מסוג T פרמטי T סטטי ציבורי T [] לא בטוח (אלמנטים T ...) {

שיטה זו, אם משתמשים בה בצורה לא נכונה, כמו במקרה של שָׁבוּר, יזהם an לְהִתְנַגֵד[] מערך לתוך הערימה במקום הסוג המיועד ב.

כדי לרסק את האזהרה הזו, אנחנו יכולים להוסיף את @ SafeVarargs ביאור על שיטות קונסטרוקציות סופיות או סטטיות.

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

מחלקה ציבורית {גרסאות רשימה פרטיות = ArrayList חדש (); @ SafeVarargs ציבורי בטל סופי ציבורי (T ... toAdd) {עבור (גרסת T: toAdd) {versions.add (גרסה); }}}

שימוש בטוח בוורגס הוא מושג מסובך כשלעצמו. למידע נוסף, לג'וש בלוך יש הסבר נהדר בספרו, Java אפקטיבי.

3. מסקנה

במאמר מהיר זה, ראינו כיצד להשתמש ב- @ SafeVarargs ביאור ב- Java.

קוד המקור המלא של הדוגמאות ניתן למצוא באתר GitHub.


$config[zx-auto] not found$config[zx-overlay] not found