בוני קוטלין

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

במדריך זה נבחן היטב את הבונים בקוטלין.

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

לצורך הגדרת פרויקט קוטלין, עיין במדריך ההיכרות שלנו.

בקוטלין, בכיתה יכולים להיות קונסטרוקטור ראשוני ובונה משני נוסף או יותר.

בחלקים הבאים נעבור על כל סוג ומושגים קשורים.

2. קונסטרוקטור ראשי

הדרך הראשונה ליצור אובייקט בקוטלין היא באמצעות קונסטרוקטור ראשי.

זהו חלק מכותרת הכיתה. פרמטרים עשויים להיות גם שדות מחלקה אותם אנו מציבים לאחר הצהרת הכיתה.

בואו נסתכל על הצהרת כיתות בסיסית, עם שני מאפיינים ובונה ראשוני:

בונה אישי בכיתה (שם שווי: מחרוזת, גיל גיל: Int? = null)

בדוגמה זו הכרזנו על מאפיינים באמצעות ה- ואל מילת מפתח. זה מתנהג באותה צורה כמו משתנים רגילים, עם אזכור זה val המאפיינים הם לקריאה בלבד (Java סופי מקביל מילת מפתח).

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

במקרים מסוימים, אנו יכולים להשמיט את בַּנַאִי מילת מפתח. זה חובה רק בשני מקרים: כאשר אנו משתמשים בהערות, כמו @Autowired או משנים גישה, כמו פְּרָטִי אוֹ מוּגָן.

כמו כן, אנו יכולים להשתמש בפרמטרי ברירת המחדל של קוטלין בבונים.

לאחר מכן, בואו נראה כיצד נוכל להשתמש בבנאי הראשי שלנו:

val person = אדם ("ג'ון") val personWithAge = אדם ("מארק", 22)

אנחנו יכולים לראות את זה שם כיתה הוא קריאה לבנייה. אין צורך להשתמש ב- חָדָשׁ מילת מפתח.

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

class PersonJava {שם מחרוזת סופי; גיל שלם סופי; PersonJava (שם מחרוזת) ציבורי {this.name = שם; this.age = null; } PersonJava ציבורי (שם מחרוזת, גיל שלם) {this.name = שם; this.age = גיל; }}

כפי שאתה יכול לראות, Java תצטרך הרבה יותר קוד כדי להשיג את אותה התוצאה.

2.1. קונסטרוקטורים ראשוניים ב- JVM

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

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

אדם בכיתה (שם ערך: מחרוזת = "")

3. אתחול מאפיינים מפרמטרים של קונסטרוקטור

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

בואו נשתנה שֵׁם אל ה upperCaseName תכונה:

class אדם (שם val: מחרוזת, גיל גיל: Int? = null) {val upperCaseName: String = name.toUpperCase ()}

אנו יכולים לראות את הפלט במסוף על ידי הוספת השנייה init לַחסוֹם:

init {println ("שם המקרה העליון הוא $ upperCaseName")}

4. חסימות אתחול

אנחנו לא יכולים להכניס שום קוד לבנאי הראשי.

עם זאת, לעיתים עלינו לבצע קוד אתחול כלשהו. מקום טוב בשבילו הוא בלוק אתחול, המקדים את ה- init מילת מפתח.

חסימת האתחול נקראת על שם הבנאי הראשי. אנו יכולים גם לגשת לשדות כיתות במקום זה.

בכיתה יכולה להיות אחת או יותר init חסימות.

בואו נצמיד את חסימת האתחול ל אדם מעמד:

init {println ("שלום, אני $ name") if (surname.isEmpty ()) {throw IllegalArgumentException ("שם המשפחה לא יכול להיות ריק!")}}

לאחר מכן, כאשר אנו יוצרים a אדם אובייקט מחלקה, נראה בקונסולה:

שלום, אני ג'ון

היינו זורקים IllegalArgumentException לריקים שֵׁם מִשׁפָּחָה.

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

5. קונסטרוקטור משני

בשיעור קוטלין נוכל להכריז גם על בונה משני או יותר.בונים משניים הם קידומת עם בַּנַאִי מילת מפתח:

class Car {val id: String val type: constructor constructor (id: String, type: String) {this.id = id this.type = type}}

והשימוש הבסיסי:

main main (טענות: Array) {val car = Car ("1", "sport") val suvCar = Car ("2", "suvCar")} 

כל קונסטרוקטור משני צריך להאציל לבנאי הראשי. נעשה זאת עד זֶה מילת מפתח.

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

class Car (val id: String, val type: String) {constructor (id: String): this (id, "unknown")}

6. קונסטרוקטורים וירושה

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

שימו לב שכל השיעורים בקוטלין הם סופי כברירת מחדל. זה אומר שנצטרך להוסיף את לִפְתוֹחַ מילת מפתח כדי שנוכל לרשת מ אדם מעמד.

בואו נוסיף עוֹבֵד מעמד אשר יורש מה- אדם מעמד. שניהם משתמשים בבונים ראשוניים:

שכיר עובד (שם: מחרוזת, שכר ערך: Int): אדם (שם) 

בכך אנו מעבירים א שֵׁם לבנאי העיקרי של אדם מעמד. בנוסף, אנו מוסיפים שדה חדש בשם שכר בתוך ה עוֹבֵד מעמד.

7. מסקנה

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

יישום כל הדוגמאות שלנו ניתן למצוא בפרויקט Github.

למידע נוסף אודות תכונותיו של קוטלין, עיין במבוא שלנו לקוטלין.


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