מדריך למפעיל היהלומים בג'אווה

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

במאמר זה נסתכל על מפעילת יהלומים בג'אווה וכיצד השפעה גנרית ו- API של אוספים התפתחותה.

2. סוגי גלם

לפני Java 1.5, ה- API של אוספים תמך בסוגי גלם בלבד - לא הייתה שום דרך לפרמטרים של ארגומנטים מסוג בעת בניית אוסף:

רשימת מכוניות = ArrayList חדש (); cars.add (אובייקט חדש ()); cars.add ("מכונית"); cars.add (מספר שלם חדש (1));

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

3. גנריות

ב- Java 1.5 הוצגו Generics - מה שאיפשר לנו לפרמט את טיעוני הטיפוסים עבור מחלקות, כולל אלה בממשק ה- API של אוספים - בעת הצהרה ובנייה של אובייקטים:

רשימת מכוניות = ArrayList חדש ();

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

מַפָּה<>>> מכוניות = HashMap חדש<>>>();

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

רשימת גנריות = ArrayList חדש (); רשימת raws = ArrayList חדש ();

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

ArrayList הוא סוג גולמי. יש לבצע פרמטר של הפניות לסוג הגנרי ArrayList

4. מפעיל יהלומים

מפעיל היהלומים - שהוצג בג'אווה 1.7 - מוסיף הסקת סוג ומפחית את מילוליות המטלות - בעת שימוש בגנריות:

רשימת מכוניות = ArrayList חדש ();

תכונת ההיסק מהסוג של מהדר Java 1.7 קובע את הצהרת הבנאי המתאימה ביותר שתואמת את ההפעלה.

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

ממשק ציבורי מנוע {} יישומי דיזל ברמה ציבורית מנוע {} ממשק ציבורי רכב {} רכב בכלי רכב ברמה ציבורית {}

בוא ניצור מופע חדש של a אוטו באמצעות מפעיל היהלומים:

רכב myCar = רכב חדש ();

באופן פנימי, המהדר יודע זאת דִיזֶל מיישם את מנוע ממשק ואז הוא מסוגל לקבוע קונסטרוקטור מתאים על ידי הסקת הסוג.

5. מסקנה

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

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


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