Ich habe gelesen über properties in Kotlin, einschließlich benutzerdefinierte Getter und Setter.Übergeben von Parametern zu einem benutzerdefinierten Getter in Kotlin
Ich frage mich jedoch, ob es möglich ist, einen benutzerdefinierten Getter mit zusätzlichen Parametern zu erstellen.
Betrachten wir zum Beispiel die folgende Methode in Java:
public String getDisplayedValue(Context context) {
if (PrefUtils.useImperialUnits(context)) {
// return stuff
} else {
// return other stuff
}
}
Beachten Sie, dass die statische Methode in PrefUtils
Context
als Parameter haben muss, so Entfernen dies keine Option ist.
ich es so in Kotlin schreiben möchte:
val displayedValue: String
get(context: Context) {
return if (PrefUtils.useImperialUnits(context)) {
// stuff
} else {
// other stuff
}
}
Aber meine IDE Highlights all dies in rot.
Ich bin mir bewusst, dass ich eine Funktion in meiner Klasse erstellen kann, um den angezeigten Wert zu erhalten, aber das würde bedeuten, dass ich .getDisplayedValue(Context)
in Kotlin auch verwenden müsste statt auf die Eigenschaft nach Name wie in .displayedValue
verweisen.
Gibt es eine Möglichkeit, einen benutzerdefinierten Getter wie diesen zu erstellen?
EDIT: Wenn nicht, wäre es am besten, eine Funktion dafür zu schreiben oder Context
in die Parameter des Klassenkonstruktors zu übergeben?
Wäre es schlechte Praxis passieren 'Context' in die Parameter des Klasse Konstruktor für die benutzerdefinierten Getter zu benutzen? –
Es ist nicht der einfachste Weg, aber wenn Sie die Syntax einer Eigenschaft benötigen, dann tun Sie es – voddan