2016-06-13 8 views
6

Nehmen wir an, ich habe ein letztes Feld mit private final String s (Java) oder val s (Kotlin) erklärt. Während der Initialisierung möchte ich das Feld mit dem Ergebnis eines Anrufs zu einem Remote-Dienst initialisieren. In Java wäre ich in der Lage, es im Konstruktor zu initialisieren (z. B. s = RemoteService.result()), aber in Kotlin kann ich nicht herausfinden, wie das zu tun ist, weil das Feld in derselben Zeile, die es deklariert ist, initialisiert werden muss. Was ist die Lösung hier?Wie initialisiere ich ein letztes Feld in Kotlin?

Antwort

10

Sie können val Wert in init Block gesetzt:

class MyClass { 

    val s: String 

    init { 
     s = "value" 
    } 

} 
4

Sie können auch den Wert mit by lazy initialisieren wird der Wert zum ersten Mal initialisiert wird, bezeichnet wird. Ein Beispiel

val s by lazy { RemoteService.result() } 

Kotlin wird den Typ von s aus dem Rückgabetyp des Ausdrucks raten.

Verwandte Themen