如何在不创建新实例 Kotlin 的情况下获取变量

How can I get a variable without creating a new instance Kotlin

我正在学习 Kotlin,但遇到了一些问题。

我想从另一个 class 获取一个变量,但是当我调用它时,有一个 class 的新实例拥有该变量。

在 Java,我们正在这样做

class Main {
    public static void main(String[] args) {
        SomeText.text = "another text";
        System.out.println(SomeText.text);
    }
}

class SomeText {
    public static String text = "My Text";
}

结果是“另一个文本”。

但是在 Kotlin 中,如果我使用这个:

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

class SomeText{
    var text = "My Text"
}

结果是“我的文本”。

您知道如何在不创建新实例的情况下获取变量并对其进行编辑吗? 我尝试了 SomeText::text 但它 return 是 KMutableProperty1 而不是字符串。

您可以使用 companion objects 在 Kotlin 中模拟 static。所以下面在Java

class SomeText {
    public static String text = "My Text";
}

将使用 Kotlin

class SomeText {
    companion object {
        var text = "My Text"
    }
}

然后,您只需要更新您的 main:

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

Kotlin 没有静态方法和 class,但您可以使用伴随对象:

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

class SomeText {
    companion object {
      var text = "My Text"   
    }
}