שיטות סטטיות התנהגות בקוטלין

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

אחת הדרכים בה שונה שפת הקוטלין מג'אווה היא שקוטלין אינו מכיל את סטָטִי מילת מפתח שאנו מכירים.

במדריך מהיר זה נראה כמה דרכים להשיג את התנהגות השיטה הסטטית של Java בקוטלין.

2. פונקציות ברמת החבילה

נתחיל ביצירת a LoggingUtils.kt קוֹבֶץ. כאן ניצור שיטה פשוטה מאוד הנקראת לנפות. מכיוון שלא אכפת לנו מהפונקציונליות בשיטה שלנו, פשוט נדפיס הודעה פשוטה.

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

ניקוי באגים מהנים (debugMessage: String) {println ("[DEBUG] $ debugMessage")}

נראה בקוד המפורק שגם שלנו לנפות השיטה הוכרזה כעת כ- סטָטִי:

מחלקה סופית ציבורית LoggingUtilsKt {debugMidage final public static final (@NotNull מחרוזת debugMessage) {Intrinsics.checkParameterIsNotNull (debugMessage, "debugMessage"); מחרוזת var1 = "[DEBUG]" + debugMessage; System.out.println (var1); }}

3. בן לוויה חפצים

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

בואו נגדיר את שיטת הבאגים שלנו בתוך a בן לוויה לְהִתְנַגֵד:

class ConsoleUtils {אובייקט נלווה {fun debug (debugMessage: String) {println ("[DEBUG] $ debugMessage")}}

הקוד המפורק שלנו מראה לנו שאנחנו יכולים לגשת ל- לנפות שיטה באמצעות בן לוויה לְהִתְנַגֵד:

class final class ConsoleUtils {public static final ConsoleUtils.Companion Companion = new ConsoleUtils.Companion ((DefaultConstructorMarker) null); מחלקה סופית ציבורית סטטית ציבורית נלווית {debugMidage public final public (@NotNull debugMessage) {Intrinsics.checkParameterIsNotNull (debugMessage, "debugMessage"); מחרוזת var2 = "[DEBUG]" + debugMessage; System.out.println (var2); } Companion פרטי () {} Public Companion (DefaultConstructorMarker $ constructor_marker) {this (); }}}

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

לבסוף, כדי להפוך את לנפות שיטה סטָטִי שוב, עלינו להשתמש ב- @JvmStatic ביאור:

class ConsoleUtils {אובייקט נלווה {@JvmStatic debug debug (debugMessage: String) {println ("[DEBUG] $ debugMessage")}}}

על ידי שימוש בו, בסופו של דבר יהיה לנו ממש איתור ניפוי חלל סופי סטטי שיטה בקוד המפורק שלנו:

class final class ConsoleUtils {public static final ConsoleUtils.Companion Companion = new ConsoleUtils.Companion ((DefaultConstructorMarker) null); @JvmStatic איתור באגים חלל סופי סטטי ציבורי (@NotNull מחרוזת debugMessage) {Companion.debug (debugMessage); } מעמד סופי ציבורי סטטי ציבורי נלווה {@JvmStatic דיבוב חלל סופי ציבורי (@NotNull מחרוזת debugMessage) {Intrinsics.checkParameterIsNotNull (debugMessage, "debugMessage"); מחרוזת var2 = "[DEBUG]" + debugMessage; System.out.println (var2); } Companion פרטי () {} Public Companion (DefaultConstructorMarker $ constructor_marker) {this (); }}}

כעת נוכל לגשת לשיטה חדשה זו ישירות דרך ה- ConsoleUtils מעמד.

4. מסקנה

במדריך קצר זה ראינו כיצד לשכפל בקוטלין את התנהגותה של ג'אווה סטָטִי שיטות. השתמשנו בפונקציות ברמת החבילה וגם באובייקטים נלווים.

ניתן למצוא את היישום של כל התמציות הללו ב- GitHub.


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