将函数放在"同伴对象"中.
所以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
注释或命名同伴类.
从docs人中:
Companion Objects
类中的对象声明可以用
companion
标记 关键词:class MyClass { companion object Factory { fun create(): MyClass = MyClass() } }
只需使用类就可以调用伴生对象的成员
val instance = MyClass.create()
...
但是,在JVM上,可以生成伴随对象的成员
添加@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 打电话给它,但是