Statikus módszerek viselkedése Kotlinban
1. Áttekintés
Az egyik módja annak, hogy a Kotlin nyelv eltér a Java-tól, az, hogy a Kotlin nem tartalmazza a statikus kulcsszó, amelyet ismerünk.
Ebben a gyors bemutatóban megismerhetünk néhány módot a Java statikus módszer viselkedésének elérésére Kotlinban.
2. Csomagszintű funkciók
Kezdjük azzal, hogy létrehozunk egy LoggingUtils.kt fájl. Itt létrehozunk egy nagyon egyszerű módszert, az úgynevezett hibakeresés. Mivel nem sokat törődünk a módszerünk funkcionalitásával, csak egy egyszerű üzenetet fogunk kinyomtatni.
Mivel a módszerünket osztályon kívül definiáljuk, ez egy csomagszintű függvényt képvisel:
fun debug (debugMessage: String) {println ("[DEBUG] $ debugMessage")}
A visszafejtett kódban azt is látni fogjuk, hogy a mi hibakeresés módszert deklarálták statikus:
public final class LoggingUtilsKt {public static final void debug (@NotNull String debugMessage) {Intrinsics.checkParameterIsNotNull (debugMessage, "debugMessage"); String1 var1 = "[DEBUG]" + debugMessage; System.out.println (var1); }}
3. Társ Tárgyak
Kotlin lehetővé teszi, hogy olyan objektumokat hozzunk létre, amelyek közösek az osztály összes példányában - a társobjektumok. A kulcsszó hozzáadásával létrehozhatunk egy objektum egyedi példányát társ.
Határozzuk meg a hibakeresési módszerünket a társ tárgy:
osztály ConsoleUtils {társobjektum {fun debug (debugMessage: String) {println ("[DEBUG] $ debugMessage")}}}
Bontott kódunk megmutatja, hogy hozzáférhetünk a hibakeresés módszer a Társ tárgy:
public final class ConsoleUtils {public static final ConsoleUtils.Companion Companion = új ConsoleUtils.Companion ((DefaultConstructorMarker) null); public static final class Companion {public final void debug (@NotNull String debugMessage) {Intrinsics.checkParameterIsNotNull (debugMessage, "debugMessage"); String2 var2 = "[DEBUG]" + debugMessage; System.out.println (var2); } private Companion () {} public Companion (DefaultConstructorMarker $ constructor_marker) {this (); }}}
Annak elkerülése érdekében, hogy a kapott példányt általános névvel hívjuk Társ, egyedi nevet is adhatunk.
Végül, hogy a hibakeresés módszer statikus ismét használnunk kell a @JvmStatic kommentár:
osztály ConsoleUtils {társobjektum {@JvmStatic fun debug (debugMessage: String) {println ("[DEBUG] $ debugMessage")}}}
Használatával egy tényleges eredményre jutunk statikus végleges érvénytelen hibakeresés módszer a dekompilált kódunkban:
public final class ConsoleUtils {public static final ConsoleUtils.Companion Companion = új ConsoleUtils.Companion ((DefaultConstructorMarker) null); @JvmStatic public static final void debug (@NotNull String debugMessage) {Companion.debug (debugMessage); } public static final class Companion {@JvmStatic public final void debug (@NotNull String debugMessage) {Intrinsics.checkParameterIsNotNull (debugMessage, "debugMessage"); String2 var2 = "[DEBUG]" + debugMessage; System.out.println (var2); } private Companion () {} public Companion (DefaultConstructorMarker $ constructor_marker) {this (); }}}
Most már közvetlenül hozzáférhetünk ehhez az új módszerhez a ConsoleUtils osztály.
4. Következtetés
Ebben a rövid bemutatóban láttuk, hogyan lehet Kotlinban megismételni a Java viselkedését statikus mód. Használtunk csomagszintű függvényeket és kísérőobjektumokat is.
Az összes kivonat megvalósítása megtalálható a GitHub-on.