我希望能够将类实例保存到公共静态变量,但我无法弄清楚如何在Kotlin中执行此操作。
class Foo {
public static Foo instance;
public Foo() {
instance = this;
}
}
答案 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; }