Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

267
Views
Kotlin getter / setter when using a primary constructor

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?

over 4 years ago · Hanz Gallego
4 answers
Answer question

0

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
        }
}
over 4 years ago · Hanz Gallego Report

0

You cannot write getters/setters inside of the constructor, you can do the following:

  1. Create variable inside class whose value taken from constructor.
class Car(speed: Int) {
    var speed = speed
        get() = field 
        set(value) {
            field = value
        }
}
  1. Use @JvmField annotation to restrict compiler not to auto-generate getters/setters and implement one yourself
class Car(@JvmField private var speed: Int) {
    fun getSpeed() = speed
    fun setSpeed(value: Int) { speed = value }
}
over 4 years ago · Hanz Gallego Report

0

If your Car is just a data holder, you could make it a data class, which generates a bunch of methods for you, see this example:

data class Car(var speed: Int)

You can use a parameterized constructor and the setters as follows

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")
}

That would output:

240 km/h
120 km/h
over 4 years ago · Hanz Gallego Report

0

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

over 4 years ago · Hanz Gallego Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!