Kotlin静态方法和变量

时间:2017-05-08 21:52:18

标签: kotlin

我希望能够将类实例保存到公共静态变量,但我无法弄清楚如何在Kotlin中执行此操作。

class Foo {

    public static Foo instance;
    public Foo() {
        instance = this;
    }

}

4 个答案:

答案 0 :(得分:83)

与Java的静态字段最接近的是伴随对象。您可以在此处找到相关文档参考:https://kotlinlang.org/docs/reference/object-declarations.html#companion-objects

你在Kotlin的代码看起来像这样:

class Foo {

    companion object {
        lateinit var instance: Foo
    }

    init {
        instance = this
    }

}

如果您希望将您的字段/方法作为静态公开给Java调用者,则可以应用@JvmStatic注释:

class Foo {

    companion object {
        @JvmStatic lateinit var instance: Foo
    }

    init {
        instance = this
    }

}

答案 1 :(得分:26)

看起来你想要定义一个单例对象。 Kotlin支持它作为一流的概念:

object Foo {
  ... 
}

带有静态字段和构造函数的所有样板代码都由Kotlin自动处理。你不必写任何一个。

从Kotlin代码中,您可以将此对象的实例简称为Foo。从Java代码中,您可以将此对象的实例引用为Foo.INSTANCE,因为Kotlin编译器会自动创建名为INSTANCE的相应静态字段。

答案 2 :(得分:7)

首先创建一个简单的类然后创建一个块后跟伴随对象关键字

例如:

class Test{

    companion object{

        fun  getValue(): String{

           return "Test String"

        }
    }
}

您可以使用类名点函数名称

来调用此类函数

例如:

// here you will get the function value
Test.getValue() 

答案 3 :(得分:0)

您可以为该类创建一个伴随对象,如果您确实将该字段设置为静态,则可以使用注释@JvmStatic。 Companion对象可以访问它所伴随的类的私有成员。

见下面的例子:

#first_half aside li
{ padding: 0 0 7px 0; }