פרמטרים ברירת מחדל של Java באמצעות העמסת יתר של השיטה
1. סקירה כללית
במדריך קצר זה נדגים את השימוש בעומס יתר של השיטה כדי לדמות פרמטרי ברירת מחדל ב- Java.
הנה, אנו אומרים לדמות מכיוון שבניגוד לשפות OOP מסוימות אחרות (כמו C ++ ו- Scala), מפרט Java אינו תומך בהקצאת ערך ברירת מחדל לפרמטר שיטה.
2. דוגמא
כדוגמה, בואו נכין תה! ראשית, נצטרך תה POJO:
כיתה ציבורית תה {גמר סטטי int DEFAULT_TEA_POWDER = 1; שם מחרוזת פרטי; חלב אינטימי פרטי; עשבי תיבול בוליאניים פרטיים; סוכר אינטי פרטי; אבקה פרטית אבקה; // גטרים סטנדרטיים}
הנה ה שֵׁם הוא תחום חובה, כמו שלנו תה צריך שם לפחות.
ואז, לא יכול להיות שום תה ללא אבקת תה. לכן, נניח שהמשתמש רוצה 1 כף רגילה אבקת תה בתה שלהם, אם הוא לא מסופק בזמן הקריאה. זהו פרמטר ברירת המחדל הראשון שלנו.
הפרמטרים האופציונליים האחרים הם חלב (במ"ל), עשבי תיבול (להוסיף או לא להוסיף), ו- סוכר (בכף). אם אחד מהערכים שלהם אינו מסופק, אנו מניחים שהמשתמש אינו רוצה אותם.
בואו נראה כיצד להשיג זאת בג'אווה באמצעות העמסת יתר של השיטה:
תה ציבורי (שם מחרוזת, חלב int, עשבי תיבול בוליאניים, int סוכר, int teaPowder) {this.name = שם; זה חלב = חלב; this.herbs = עשבי תיבול; זה.סוכר = סוכר; this.teaPowder = תה אבקה; } תה ציבורי (שם מחרוזת, חלב int, עשבי תיבול בוליאניים, int sugar) {this (שם, חלב, עשבי תיבול, סוכר, DEFAULT_TEA_POWDER); } תה ציבורי (שם מחרוזת, חלב אינט, עשבי תיבול בוליאניים) {זה (שם, חלב, עשבי תיבול, 0); } תה ציבורי (שם מחרוזת, חלב int) {זה (שם, חלב, שקר); } תה ציבורי (שם מחרוזת) {זה (שם, 0); }
כפי שניכר, כאן אנו משתמשים בשרשור קונסטרוקטורים, סוג של עומס יתר כדי לספק לפרמטרים של השיטה כמה ערכי ברירת מחדל.
עכשיו בואו נוסיף מבחן פשוט כדי לראות זאת בפעולה:
@ מבחן ציבורי בטל whenTeaWithOnlyName_thenCreateDefaultTea () {Tea blackTea = תה חדש ("תה שחור"); assertThat (blackTea.getName ()). isEqualTo ("תה שחור"); assertThat (blackTea.getMilk ()). isEqualTo (0); assertThat (blackTea.isHerbs ()). isFalse (); assertThat (blackTea.getSugar ()). isEqualTo (0); assertThat (blackTea.getTeaPowder ()). isEqualTo (Tea.DEFAULT_TEA_POWDER); }
3. חלופות
ישנן דרכים אחרות להשיג הדמיית ברירת מחדל של פרמטרים ב- Java. חלקם הם:
- באמצעות תבנית Builder
- באמצעות אופציונלי
- מתן אפשרות לאפס כטיעוני שיטה
כך נוכל להשתמש בדרך השלישית להתרת טיעונים בטלים בדוגמה שלנו:
תה ציבורי (שם מחרוזת, חלב שלם, עשבי תיבול בוליאניים, סוכר שלם, תה שלם אבקת) {this.name = שם; this.milk = חלב == null? 0: milk.intValue (); this.herbs = עשבי תיבול == null? שקר: herb.booleanValue (); this.sugar = סוכר == null? 0: sugar.intValue (); this.teaPowder = teaPowder == null? DEFAULT_TEA_POWDER: teaPowder.intValue (); }
4. מסקנה
במאמר זה בדקנו שימוש בעומס יתר של שיטות כדי לדמות פרמטרים המוגדרים כברירת מחדל ב- Java.
אמנם יש דרכים אחרות להשיג את אותו הדבר, אך עומס יתר הוא נקי ופשוט ביותר. כמו תמיד, קוד זמין ב- GitHub.