Kotlin类中“ this”的目的

时间:2019-12-26 11:00:54

标签: class kotlin this getter-setter

我正在尝试在课堂上弄清this的目的。考虑以下示例:

class TestMe {

    var a: Int = 1
    var b: Int = 2

    fun setValA(value: Int) {
        this.a = value
    }
    fun setValB(value: Int) {
        b = value
    }
}

val testInstance1 = TestMe()
val testInstance2 = TestMe()

testInstance1.setValA(3)
testInstance1.setValB(4)

println("instance 2A: ${testInstance2.a}, instance 2B: ${testInstance2.b}") // 1 2
println("instance 1A: ${testInstance1.a}, instance 1B: ${testInstance1.b}") // 3 4

似乎我可以简单地忽略this值,结果将是相同的。我在这里想念什么吗?

非常感谢!

2 个答案:

答案 0 :(得分:5)

是的,与Java相同,但是如果a也是参数名称,则会出现问题:

fun setValA(a: Int) {
    a = a
}

编译错误:

Val cannot be reassigned

然后您将不得不使用this

fun setValA(a: Int) {
    this.a = a
}

答案 1 :(得分:2)

除了user7294900的答案外,this只能在this.<property or method name>中省略,还有许多其他用途: this::class

fun doSomething(other: OtherClass) {
    other.doSomethingWith(this)
}