You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kotlin中初始化与构造器参数同名的类变量?

在Kotlin中区分同名的类成员与构造器参数

在Kotlin里,你可以和C#一样用this.来指代类的成员变量,以此区分同名的构造器参数。下面是对应你给出的C#代码的实现方式,以及几种更符合Kotlin风格的写法:

1. 与C#写法最接近的次构造器实现

直接使用this.成员名明确指向类的成员变量,逻辑和C#完全一致:

class Product {
    lateinit var productName: String

    constructor(productName: String) {
        this.productName = productName
    }
}

2. 更简洁的Kotlin主构造器写法

Kotlin推荐用主构造器简化代码,你可以直接在主构造器中用var(可变)或val(只读)声明成员变量,无需单独写lateinit和赋值逻辑:

// 一行代码完成类的定义,自动将参数转为类成员并赋值
class Product(var productName: String)

3. 主构造器+初始化块的场景(适合需要额外逻辑的情况)

如果需要在赋值前做额外处理,或者成员变量是只读的val,可以用初始化块配合this.:

class Product(productName: String) {
    val productName: String

    init {
        // 这里可以添加额外的校验或处理逻辑
        this.productName = productName
    }
}

总结:Kotlin中this的作用和C#一致,当参数与类成员同名时,this.成员名指向类的成员,直接写变量名则指向构造器参数。如果没有特殊逻辑,优先使用主构造器直接声明成员变量的写法,更符合Kotlin的简洁风格。

内容的提问来源于stack exchange,提问作者Risen Star

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 01:40:42