Kotlin:评估吸气剂/塞特方法

时间:2020-09-19 06:21:39

标签: kotlin

我有以下示例类:

fun main(args: Array<String>) {
    var car = Car("Ford", 50, 8000)
    println(car.vendor)
    println("Speed: ${car.speed}")

    car.speed = 65 // How does it know which setter to invoke?
    println("New speed: ${car.speed}")
}

class Car(vendor: String = "Unknown", speed: Int = 0, price: Int = 0) {
    var vendor = vendor
        get() = field
        set(newVendor: String) {
            field = newVendor
         }

    var speed = speed
        get() = field
        set(speed: Int) {
            field = speed
        }

    var price = price
        get() = field
        set(newPrice: Int) {
            field = price
        }
}

当我更改速度属性时(请参阅注释行):科特林从哪里知道,实际上需要调用哪种设置方法?

我班上有两种设置方法(速度,价格),两者都被命名为“ set”,两者都期望有整数值。

定义方法的顺序是否至关重要?

必须在属性定义之后直接编写相应的getter / setter方法?还是以某种方式有所不同?如果是这样:如何?

缩进只是一个缩影?还是编译器需要缩进?

1 个答案:

答案 0 :(得分:3)

car.speed = 65被称为属性访问语法。它等效于car.setSpeed(65)

您没有两个名为set的方法;您有两个speed类型的两个可变属性priceInt。它们每个都有对应的getter和setter方法。在Java Beans约定中,speed的getter将是getSpeed,而setter的setSpeed(Int)是。

有关更多详细信息,请参见https://kotlinlang.org/docs/reference/properties.html

相关问题