El ejemplo es de un curso de Kotlin que estoy haciendo:
class Car { var speed: Int = 0 get() = field set(value) { field = value } }Si me gusta usar un constructor primario como este:
class Car(var speed: Int)¿Cómo tendría que escribir getter/setter en ese caso?
Simplemente puede inicializar su propiedad con el valor del constructor:
class Car(speed: Int) { var speed: Int = speed get() = field set(value) { field = value } }No puede escribir getters/setters dentro del constructor, puede hacer lo siguiente:
class Car(speed: Int) { var speed = speed get() = field set(value) { field = value } }@JvmField para restringir el compilador para que no genere captadores/establecedores automáticamente e implemente uno usted mismo class Car(@JvmField private var speed: Int) { fun getSpeed() = speed fun setSpeed(value: Int) { speed = value } }Si su Car es solo un contenedor de datos, puede convertirlo en una data class , lo que genera un montón de métodos para usted, vea este ejemplo:
data class Car(var speed: Int)Puede usar un constructor parametrizado y los setters de la siguiente manera
fun main() { // use a parameterized constructor var car = Car(240) println("${car.speed} km/h") // use the setter car.speed = 120 println("${car.speed} km/h") }Eso daría como resultado:
240 km/h 120 km/hSintaxis de propiedad –
var <propertyName>[: <PropertyType>] [= <property_initializer>] [<getter>] [<setter>]Aquí, el inicializador de propiedad, getter y setter son opcionales. También podemos omitir el tipo de propiedad si se puede deducir del inicializador. La sintaxis de una declaración de propiedad inmutable o de solo lectura difiere de una mutable en dos formas: comienza con val en lugar de var, y no permite un setter.
En kotlin, val se usa solo para lectura significa getter y var se usa como no getter() y setter()
class Company { var name: String = "Defaultvalue" }El código anterior es equivalente al siguiente código
class Company { var name: String = "defaultvalue" get() = field // getter set(value) { field = value } // setter } También puede usar data class kotlin si desea almacenar datos en su clase Car . por lo que no es necesario definir getter y setter.
data class Car(var speed: Int)Para obtener más información, consulte https://kotlinlang.org/docs/reference/properties.html#getters-and-setters