this用法
this 在 Kotlin 中用于引用当前对象实例,在嵌套类、Lambda、匿名对象等上下文中具有灵活用法。
可以通过 标签化的 this 区分不同作用域的对象。在 高阶函数(如 apply、with)中,this 代表 Lambda 的接收者对象,使代码更加简洁,这些用法让 Kotlin 中的 this 比传统的 Java 更加灵活和强大,特别是在函数式编程和嵌套类的上下文中。
1. 类中的 this
在类的成员方法或属性中,this 用于引用当前对象的实例。
class Person(val name: String) {
fun introduce() {
println("Hello, my name is ${this.name}.")
}
}
fun main() {
val person = Person("Alice")
person.introduce() // 输出: Hello, my name is Alice.
}
这里的 this.name 明确表示访问当前对象的 name 属性。
可选用法: 如果没有歧义,可以省略 this,直接写成 name。
2. 构造函数之间的调用 (this(…))
在主构造函数中可以通过 this(…) 调用类的其他次构造函数。
class Animal(val name: String) {
constructor(name: String, age: Int) : this(name) {
println("Animal's name is $name and age is $age.")
}
}
fun main() {
val dog = Animal("Dog", 5)
}
解释: this(name) 调用了主构造函数。
3. 扩展 this 的作用域
3.1 嵌套类或内部类中的 this
如果类包含嵌套类或内部类,我们可以使用 标签化的 this 来区分不同作用域的对象。
class Outer {
val outerName = "Outer"
inner class Inner {
val innerName = "Inner"
fun printNames() {
println(this.innerName