Können Erweiterungsfunktionen "statisch" aufgerufen werden?

Ist es möglich, eine Erweiterungsfunktion zu erstellen und diese @ aufzurufe als ob es statisch wäre?

Beispielsweise..
fun System.sayByeAndExit() {
    println("Goodbye!")
    System.exit()
}

fun main(args: Array<String>) {
    System.sayByeAndExit() // I'd like to be able to call this
}
Ich weiß, dass das Codebeispiel nicht funktioniert ...

ch verstehe, dass die Erweiterungsfunktionen von kotlin @ si statisch aufgelöst, wie im @ erwähKotlin-Referenz (Erweiterungsfunktionen), dies bedeutet jedoch nicht, dass sie so aufgerufen werden können, als wären sie statische Funktionen innerhalb einer Klasse (im Java-Sinne).

Ich verstehe auch, dass dieser Code nicht funktioniert, weil eskeine Instanz of System, um an die vom Compiler generierte Methode übergeben zu werden; daher wird es nicht kompiliert.

Warum sollte ich das wollen?

Einige von Ihnen fragen sich vielleicht, warum dieses Verhalten wünschenswert ist. Ich kann verstehen, warum Sie denken, dass dies nicht der Fall ist. Hier einige Gründe:

Es bietet alle Vorteile, die Standard-Erweiterungsfunktionen bieten.Eine Instanz der Klasse muss nicht erstellt werden gerad, um auf die zusätzlichen Funktionen zuzugreifen.Auf die Funktionen kann über ein @ zugegriffen werde systemweiter Kontext (vorausgesetzt die Klasse ist sichtbar).Zusammenfassen..

Hat Kotlin eine Möglichkeit, eine statische Funktion an eine Klasse anzuhängen? Ich würde gerne wissen.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage