Heim >Backend-Entwicklung >C#.Net-Tutorial >Detaillierte Erklärung, wie man statische Methoden in Kotlin ähnlich wie Java oder C# implementiert
So implementieren Sie
statische -Methoden in Kotlin ähnlich wie Java oder C#. Dieser Artikel fasst mehrere Methoden zusammen, nämlich: Paketebene Funktion , Begleiter Objekt, Erweiterungsfunktionen und Objektdeklarationen. Dies erfordert, dass jeder je nach Situation eine Auswahl trifft.
Sie können viele solcher Artikel im Internet finden. Die offizielle Empfehlung sind Funktionen auf Paketebene, und einige Leute empfehlen die Verwendung von Begleitobjekten (Companion Klasse). Das sind gute Optionen, aber sie sind nicht perfekt, und wir haben in verschiedenen Situationen bessere Optionen. Ich habe mehrere Methoden zusammengefasst, nämlich: Funktionen auf Paketebene, Begleitobjekte, Erweiterungsfunktionen und Objektdeklarationen. Dies erfordert, dass jeder je nach Situation eine Auswahl trifft.
1. Funktionen auf Paketebene
Der Unterschied zwischen Kotlin und Java und C# besteht darin, dass Sie Funktionen direkt in der deklarieren können Paket. Die Methode ist die gleiche wie in der Kategorie, daher werde ich hier nicht auf Details eingehen. Es ist in der Tat eine sehr gute Wahl. Es eignet sich für Funktionen, die keine internen Klassen für den Datenaustausch enthalten müssen.
2. Begleitobjekt
Ist Ihnen bei der Verwendung von Java schon einmal aufgefallen, wann die statischen
Variablen und Methoden in Java-Klassen initialisiert werden? Ist es der erste Aufruf der statischen Methode oder das Laden der entsprechenden Java-Klasse? Die Antwort lautet, wenn die Java-Klasse geladen wird (d. h. wenn Sie die Instanzvariablen und -methoden in der Java-Klasse aufgerufen haben, auch wenn Sie keine statischen Variablen und Methoden verwendet haben, wurden die statischen Variablen initialisiert). Ist es nicht angebracht, dieses Phänomen als begleitend zu bezeichnen?
fun main(args: Array<String>) { Books.getBestSellers() } class Books(var name: String, val page: Int) { fun getWordCount()=page*100 companion object ComBooks{ var bestSellers=arrayOf("Harry Potter\r\t","Lord of the Rings\r\t") fun getBestSellers() { bestSellers.forEach{v->println(v)} } } }Die Begleitklasse wird mit Companion deklariert. Sie wird in die Klasse geladen, in der sich das Begleitobjekt befindet, und das Begleitobjekt wird wie statische Java-Mitglieder initialisiert. Sie kann anonym sein oder denselben Namen wie die enthaltende Klasse haben. Es gibt zwei Arten von Aufrufen:
oder Books.ComBooks.getBestSellsers()?
Books.getBestSellsers()?。
3. Erweiterungsfunktion
public class Utils { public static boolean isEmpty(String string){ return string != null && string.length() == 0; } public static boolean isWeakEmpty(String string){ return isEmpty(string) && string.trim().length() == 0; } }Natürlich können wir die beiden oben genannten Methoden verwenden, um diese statischen Methoden zu implementieren, aber wir haben einen besseren Weg.
fun String.isEmpty() = this != null && this.length == 0; fun String.isWeakEmpty()= this.isEmpty() && this.trim().length == 0Die beiden oben genannten Codezeilen erweitern die String-Klasse um zwei Funktionen. Diese beiden Funktionen können wie ihre nativen Funktionen aufgerufen werden. Tatsächlich ändert die Erweiterungsfunktion den internen Inhalt der String-Klasse nicht und fügt String nur zwei statische Funktionen hinzu. Im Vergleich zur Utils-Klasse von Java wurde die Lesbarkeit jedoch erheblich verbessert.
4. Objektdeklaration
object AppInfo{ var AppName = "Kotlin Message" var AppAuthor = "Riley Ge" fun toSimpleString() { println("AppName:$AppName,AppAuthor:$AppAuthor") } }Discover Kotlin-Objekte Wie mächtig! Jeder sollte darauf achten, dass AppInfo beim ersten Zugriff verzögert initialisiert wird, was bedeutet, dass AppInfo nicht initialisiert wird, wenn das Objekt deklariert wird.
5. Zusammenfassung
Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung, wie man statische Methoden in Kotlin ähnlich wie Java oder C# implementiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!