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

Kotlin中如何不创建新实例获取并修改其他类的变量?

问题根因

你写的Kotlin代码中每次调用SomeText()都会创建一个全新的SomeText类实例,两次调用分别操作两个完全独立的对象,因此修改第一个实例的text属性不会影响第二个实例的属性值,才会输出默认的"My Text"。
你在Java中使用的是类静态成员,静态成员属于类本身而非某个实例,全局只有一份,Kotlin中没有static关键字,要实现相同效果可以用以下两种方案:

方案1:使用伴生对象(companion object)实现类级成员

如果你的类同时需要实例成员和类级静态成员,用伴生对象包裹需要全局共享的属性:

fun main(args: Array<String>) {
    // 直接通过类名调用,不需要创建实例
    SomeText.text = "Another text"
    println(SomeText.text) // 输出:Another text
}

class SomeText{
    // 伴生对象内的属性属于类本身,全局唯一
    companion object {
        var text = "My Text"
    }
}

方案2:使用object类实现单例

如果这个类本身不需要创建多个实例,所有成员都是全局共享的,可以直接声明为object类:

fun main(args: Array<String>) {
    SomeText.text = "Another text"
    println(SomeText.text) // 输出:Another text
}

// object声明的类全局只有一个实例,不需要手动创建
object SomeText{
    var text = "My Text"
}

关于SomeText::text的说明

::是Kotlin的属性引用语法,拿到的是属性本身的元对象(KMutableProperty1类型),不是属性的存储值,要获取值需要配合实例调用get()方法,但这无法解决你需要类级共享变量的需求,不需要用这种写法。

内容的提问来源于stack exchange,提问作者RG Peaxel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 08:24:00