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.