מחשבים, תכנות
הגנריקה Java: תיאור ושיטות
החל עם הופעתו של שפת Java עבר הרבה שינויים, אשר ללא ספק ביאת רגעים חיוביים הפונקציונלי שלו. אחד השינויים המשמעותיים הללו הוא המבוא של גנרי או הכללות Java. פונקציונליות זו לא רק להפוך את השפה יותר גמישה צדדית, אך גם הרבה יותר בטוחה מבחינת הבאה את סוגי הנתונים.
העובדה היא כי לפני כניסתה של הגנריקה בקוד הגנרית Java יכול להיווצר, לא רק במונחים של אובייקט התייחסות לסוג. קישורים אלה ניתן להקצות אובייקט כלשהו. אחרי הכל, כיתות ב- Java הם היורשים בכיתה אובייקט מרומזת. עם זאת, גישה זו היא מקור פוטנציאלי של שגיאות רבות הקשורות סוגי ביטחון ההמרה לכאורה של אובייקט מהאובייקט לסוג היעד. בעת שימוש הכללות כל היציקות מבוצעות באופן מרומז ובאופן אוטומטי, ביטול אפילו האפשרות לטעויות.
הגנריקה Java: תיאור ודוגמא
הבה נבחן דוגמה פשוטה של היישום של הכללה לשיעורים קבועים באיור להלן. ואז לצאת לבדיקה מפורטת של כל דקויות וניואנסים של Generic Java.
שים לב לאופן שבו ההכרזה בכיתה מתרחשת זוג. מיד לאחר מעמד שם, בסוגריים זוויתיים פתוח, אשר הצביע על מכתב ט זה הוא סוג של מילוי, אשר נמצאת בתהליך של יצירת מופע של מחלקה זו יוחלפו על ידי סוג מסוים. זה נראה כדלקמן: זוג
הערה: החל בגרסה השמינית של Java, המפרט את סוג היעד בהכרזותיו בסוגר זוויתיים התיחסות הבנאי ניתן להשאיר ריק. אז למשל ניתן לשכתב כאמור: זוג
כאשר מח' מוכרזת באופן כזה, אז הגוף שלו במקום סוגים ספציפיים של שדות, קישורים, חפצים חזרו על ידי השיטות אתה יכול להשתמש מכתב זה. מאז T בעת יצירת האובייקט בכיתה מוחלף בסוג מסוים, שדות ראשונים ושניים במקרה זה יהיו של המספר השלם הסוג.
בעקבות ההיגיון של טיעונים firstItem secondItem, התייחס בנאי המתאים גם חייב להיות מסוג Integer או תת. אם תנסה להעביר נתונים מסוג זה שונה ממה צוין בעת יצירת אובייקט, המהדר לא ייתן את הטעות הזאת. לפיכך, בנאי ארגומנטים כאשר אובייקט יהיה כדלקמן: זוג
כללי עם סוגי מעמד מספר פרמטרים
בשיעורים כלליים גם יכול להכריז פרמטרים מרובים מהסוג זה נקבע בסוגר זווית עם פסיק. מחדש על ידי מקרה בכיתת הזוג מוצגת להלן.
כפי שאתם יכולים לראות, כאשר אתה יוצר מופע של מחלקה זו בסוגריים זווית צריך לציין את אותו מספר של סוגי כפרמטרים. אם אתם מכירים את זה סוג של מבנה נתונים כמו מפה, אתה יכול לראות כי היא משתמשת בעיקרון הזהה בדיוק. יש, הטענה הראשונה מציינת את סוג המפתח, והשני - סוג של ערך. יצוין כי הסוגים משודרים כאשר טיעוני אובייקט עשויים לחפוף. לדוגמא, בכיתה למשל מודעת הזוג הבאה נכון לחלוטין: הזוג <מחרוזת, מחרוזת> obj.
תכונות מסוימות של כללות
לפני שנמשיך הלאה, יש לציין כי מהדר Java אינה יוצרת גרסאות שונות של זוג בכיתה. למעשה, בתהליך של קומפילצית סוג כללי כל המידע נמחק. במקום זאת, אתה מביא את הסוגים המתאימים, יצירת גרסה מיוחדת של מעמד הזוג. עם זאת, בתוכנית יש עדיין רק גרסה גנרית של הכיתה. תהליך זה נקרא בסוג ניקוי Java גנרי.
הערת נקודה חשובה. קישורים גרסאות שונות של אותו מעמד הגנרית Java לא יכול להצביע על אחד ואותו אובייקט. כלומר, נניח שיש לנו שני קישורים: זוג
הגבלות על כיתות גנריות
חשוב לדעת כי הכללות יכולות להיות מיושמות רק להפנות סוגים, כי הוא להעביר פרמטרי טיעון Java בכיתת גנריות חייב להיות סוג כיתה. סוגים פשוטים אלו, כגון, למשל, כפולים או ארוכים, לא ניתן להעביר. במילים אחרות, ההכרזה בכיתה הבאה קו שני אסור: זוג
הגבלה חמורה נוספת היא חוסר היכולת ליצור מופע של סוג הפרמטר. לדוגמא, את השורה הבאה תגרום שגיאת הידור: T הראשונה = T החדש (). זה ברור, כי אתה לא יודע מראש אם ויכוח עבר בכיתה מלאה או מופשטת, או אפילו ממשק. כנ"ל לגבי יצירת מערכים.
סוגים מוגבלים
לעיתים קרובות יש מצבים שבהם יש צורך להגביל את רשימת סוגי שניתן עבר כארגומנט Java בכיתה גנריות. הבה נניח כי זוג בכיתה שלנו אנחנו רוצים לתמצת את הערכים המספריים רק עבור פעולות מתמטיות נוספים לגביהן. לשם כך אנחנו צריכים להגדיר את הגבול העליון של סוג הפרמטר. הוא הבין באמצעות מודעות על ירשו את כל הטיעונים עברו בסוגר זווית. זה ייראה כדלקמן: בכיתה זוג
זוהי קבלה משותפת. הגבלות כאלה משמשות לעתים קרובות כדי לספק פרמטרים מסוג תאימות אחת מאותו הסוג. קח למשל את הדוגמא בכיתת הזוג שלנו: בכיתה זוג
הגבלה "בתחתית" היא בדיוק באותו אופן, אך במקום המילה מרחיבה לאיית את מילת הסופר. זה מסווג בכיתה זוג
שיטות בנאים Java גנרי
ב- Java, הכללות ניתן להחיל לא רק על המעמדות, אלא גם שיטות. לדוגמא, שיטת גנרית ניתן הכריזה בכיתה רגילה.
כפי שניתן לראות בתרשים לעיל, השיטה כללי המודעה לא ביג דיל. סוג מספיק לפני החזרת שיטה לשים את הסוגריים זווית ולציין את הפרמטרים לסוג בהם.
אם הכל נעשה בצורה דומה לבנאי:
בסוגריים משולשים במקרה זה לשים לפני שמו של המעצב, כי אין לו ערך בתמורה. התוצאה של שני התוכניות תהיה:
שלם
מחרוזת
Similar articles
Trending Now