Kotlin: Public get private set var

126

Quelle est la bonne façon de définir une variable dans kotlin qui a un getter public et un setter privé (uniquement modifiable en interne)?

Jasper Blues
la source

Réponses:

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

Voir: Propriétés Getter et Setter

D3xter
la source
13
Notez que private setdoit être sur une nouvelle ligne.
Jasper Blues
30
... ou sur la même ligne, après un point-virgule:var abc: String = ""; private set
Boris B.
4
Je ne sais pas quoi faire avec un champ de constructeur principal.
androidguy
2
@ user3175580 Ce n'est pas possible. Utilisez un champ local à l'intérieur du constructeur principal, puis attribuez la valeur à la propriété comme "class Foo (_bar: String) {var bar: String = _bar}
D3xter
3
@JasperBlues ... sinon, vous devez ajouter un point-virgule avant private set.
Moses Aprico
7

Vous pouvez facilement le faire en utilisant l'approche suivante :

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

Regardez ce post sur Medium: Property, Getter and Setter in Kotlin .

J'espère que cela t'aides.

Andy Fedoroff
la source
3

var name : String = "Peter"
    private set

Par défaut, toutes les propriétés et fonctions sont publiques dans Kotlin. Par conséquent, le setter doit être explicitement déclaré privé tandis que le getter est public par défaut.

JGPhilip
la source