Kotlin: Public Get Private Set Var

125

Was ist der richtige Weg, um eine Variable in Kotlin zu definieren, die einen öffentlichen Getter und einen privaten (nur intern modifizierbaren) Setter hat?

Jasper Blues
quelle

Antworten:

193
var setterVisibility: String = "abc" // Initializer required, not a nullable type
    private set // the setter is private and has the default implementation

Siehe: Eigenschaften Getter und Setter

D3xter
quelle
13
Beachten Sie, dass private setdies in einer neuen Zeile stehen muss.
Jasper Blues
29
... oder in derselben Zeile nach einem Semikolon:var abc: String = ""; private set
Boris B.
4
Ich weiß jedoch nicht, was ich mit einem primären Konstruktorfeld anfangen soll.
AndroidGy
2
@ user3175580 Dies ist nicht möglich. Verwenden Sie ein lokales Feld im primären Konstruktor und weisen Sie den Wert der Eigenschaft wie "Klasse Foo (_bar: String) {var bar: String = _bar}
D3xter
3
@JasperBlues ... andernfalls müssen Sie vorher ein Semikolon hinzufügen private set.
Moses Aprico
7

Sie können dies einfach mit dem folgenden Ansatz tun :

var atmosphericPressure: Double = 760.0
    get() = field
    private set(value) { 
        field = value 
    }

Schauen Sie sich diesen Beitrag auf Medium: Property, Getter and Setter in Kotlin an .

Hoffe das hilft.

Andy Fedoroff
quelle
2

var name : String = "Peter"
    private set

Standardmäßig sind alle Eigenschaften und Funktionen in Kotlin öffentlich. Daher muss der Setter explizit als privat deklariert werden, während der Getter standardmäßig öffentlich ist.

JGPhilip
quelle