staticKotlin中没有关键字。
static
static用Kotlin 表示Java方法的最佳方法是什么?
您将功能放置在“伴侣对象”中。
所以像这样的java代码:
class Foo { public static int a() { return 1; } }
会变成
class Foo { companion object { fun a() : Int = 1 } }
然后,您可以从Kotlin代码内部使用它,如下所示:
Foo.a();
但是从Java代码中,您需要将其称为
Foo.Companion.a();
(这也来自Kotlin。)
如果您不想指定Companion位,则可以添加@JvmStatic注释或命名伴侣类。
Companion
@JvmStatic
从文档:
伴侣对象 类内的对象声明可以用伴随关键字标记: class MyClass { companion object Factory { fun create(): MyClass = MyClass() } } 可以通过仅使用类名作为限定符来调用伴随对象的成员: val instance = MyClass.create() … 但是,在JVM上,如果使用@JvmStatic 批注,则可以将伴随对象的成员生成为实际的静态方法和字段。有关更多详细信息,请参见Java互操作性部分。
类内的对象声明可以用伴随关键字标记:
class MyClass { companion object Factory { fun create(): MyClass = MyClass() } }
可以通过仅使用类名作为限定符来调用伴随对象的成员:
val instance = MyClass.create()
…
但是,在JVM上,如果使用@JvmStatic 批注,则可以将伴随对象的成员生成为实际的静态方法和字段。有关更多详细信息,请参见Java互操作性部分。
添加@JvmStatic注释如下所示
class Foo { companion object { @JvmStatic fun a() : Int = 1; } }
然后它将作为一个真正的Java静态函数存在,可以从Java和Kotlin中以方式访问Foo.a()。
Foo.a()
如果只是不喜欢该Companion名称,则还可以为伴随对象提供一个明确的名称,如下所示:
class Foo { companion object Blah { fun a() : Int = 1; } }
它可以让您以相同的方式从Kotlin调用它,但可以从java like Foo.Blah.a()(在Kotlin中也可以)调用它。
Foo.Blah.a()