Kotlin: Public get private set var


125

Apa cara yang benar untuk mendefinisikan var di kotlin yang memiliki pengambil publik dan penyetel privat (hanya dapat dimodifikasi secara internal)?

Jawaban:


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

Lihat: Properties Getter and Setter


13
Perhatikan bahwa private setharus di baris baru.
Jasper Blues

29
... atau di baris yang sama, setelah titik koma:var abc: String = ""; private set
Boris B.

4
Saya bingung apa yang harus saya lakukan dengan bidang konstruktor utama.
androidguy

2
@ user3175580 Ini tidak mungkin. Gunakan bidang lokal di dalam konstruktor utama dan kemudian tetapkan nilai ke properti seperti "class Foo (_bar: String) {var bar: String = _bar}
D3xter

3
@JasperBlues ... jika tidak, Anda perlu menambahkan titik koma sebelumnya private set.
Moses Aprico


2

var name : String = "Peter"
    private set

Secara default, semua properti dan fungsi bersifat publik di Kotlin. Oleh karena itu, penyetel harus secara eksplisit dinyatakan sebagai pribadi sementara pengambil bersifat publik secara default.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.