Late Init

Properties

Getter Setter

var <propertyName>[: <PropertyType>] [= <property_initializer>] [<getter>] [<setter>]
 
var stringRepresentation: String
    get() = this.toString()
    set(value) {
        setDataFromString(value) // parses the string and assigns values to other properties
    }

Backing Field

// Incorrect: Causes StackOverflowError
var counter: Int = 0
    set(value) {
        if (value >= 0) {
            counter = value // Recursive call to setter!
        }
    } 
 
var counter = 0 // Initializer writes to the backing field
    set(value) {
        if (value >= 0) {
            field = value // Correct: Accesses the backing field directly
        }
    }