您将功能放置在“伴侣对象”中。
所以像这样的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注释或命名伴侣类。
从文档:
伴侣对象类内的对象声明可以用伴随关键字标记:
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()。
如果只是不喜欢该
Companion名称,则还可以为伴随对象提供一个明确的名称,如下所示:
class Foo { companion object Blah { fun a() : Int = 1; }}
它可以让您以相同的方式从Kotlin调用它,但可以从java like
Foo.Blah.a()(在Kotlin中也可以)调用它。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)