The example is from a Kotlin-course I'm doing:
class Car {
var speed: Int = 0
get() = field
set(value) {
field = value
}
}
If I like to use a primary constructor like this:
class Car(var speed: Int)
How would I have to write the getter / setter in that case?
You cannot write getters/setters inside of the constructor, you can do the following:
class Car(speed: Int) {
var speed = speed
get() = field
set(value) {
field = value
}
}
@JvmField
annotation to restrict compiler not to auto-generate getters/setters and implement one yourselfclass Car(@JvmField private var speed: Int) {
fun getSpeed() = speed
fun setSpeed(value: Int) { speed = value }
}
You can just initialize your property with the value from constructor:
class Car(speed: Int) {
var speed: Int = speed
get() = field
set(value) {
field = value
}
}
Syntax of property –
var <propertyName>[: <PropertyType>] [= <property_initializer>]
[<getter>]
[<setter>]
Here, property initializer, getter and setter are optional. We can also omit property type if it can be inferred from the initializer. The syntax of a read-only or immutable property declaration differs from a mutable one in two ways: starts with val instead of var, and does not allow a setter.
In kotlin, val
is used as only for read means getter and var
is used as for not getter()
and setter()
class Company {
var name: String = "Defaultvalue"
}
The above code is equivalent to the below code
class Company {
var name: String = "defaultvalue"
get() = field // getter
set(value) { field = value } // setter
}
You can also use kotlin data class
if you want to hold data in your Car
class. so you no need to define getter and setter.
data class Car(var speed: Int)
For more check https://kotlinlang.org/docs/reference/properties.html#getters-and-setters
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With