Kotlin: Public get private set var


125

¿Cuál es la forma correcta de definir una var en kotlin que tiene un captador público y un setter privado (solo modificable internamente)?

Respuestas:


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

Ver: Propiedades Getter y Setter


13
Tenga en cuenta que private setdebe estar en una nueva línea.
Jasper Blues

29
... o en la misma línea, después de un punto y coma:var abc: String = ""; private set
Boris B.

4
Sin embargo, no sé qué hacer con un campo de constructor principal.
androidguy

2
@ user3175580 Esto no es posible. Use un campo local dentro del constructor principal y luego asigne el valor a la propiedad como "class Foo (_bar: String) {var bar: String = _bar}
D3xter

3
@JasperBlues ... de lo contrario, debe agregar punto y coma antes private set.
Moses Aprico


2

var name : String = "Peter"
    private set

De forma predeterminada, todas las propiedades y funciones son públicas en Kotlin. Por lo tanto, el establecedor debe declararse explícitamente privado mientras que el captador es público de forma predeterminada.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.