在Kotlin中没有静态关键字。
在Kotlin中表示静态Java方法的最佳方法是什么?
在Kotlin中没有静态关键字。
在Kotlin中表示静态Java方法的最佳方法是什么?
当前回答
简单来说,你可以使用“同伴对象”进入Kotlin静态世界,比如:
companion object {
const val TAG = "tHomeFragment"
fun newInstance() = HomeFragment()
}
要创建一个常量字段,请使用代码中的“const val”。 但是尽量避免使用静态类,因为它会给使用Mockito进行单元测试带来困难。
其他回答
object objectName {
fun funName() {
}
}
简单来说,你可以使用“同伴对象”进入Kotlin静态世界,比如:
companion object {
const val TAG = "tHomeFragment"
fun newInstance() = HomeFragment()
}
要创建一个常量字段,请使用代码中的“const val”。 但是尽量避免使用静态类,因为它会给使用Mockito进行单元测试带来困难。
在kotlin中没有静态关键字。如果你想遵循DRY, kotlin文档建议使用包级函数。 创建一个扩展名为.kt的文件,并将您的方法放在其中。
package p
fun m(){
//fun body
}
编译后m将会有一个public static final void的签名
and
import p.m
☺
我想对以上的回答做一些补充。
是的,你可以在源代码文件中定义函数(在类之外)。但是如果使用Companion Object在类中定义静态函数会更好,因为您可以通过利用Kotlin Extensions添加更多静态函数。
class MyClass {
companion object {
//define static functions here
}
}
//Adding new static function
fun MyClass.Companion.newStaticFunction() {
// ...
}
你可以调用上面定义的函数,就像你调用伴侣对象中的任何函数一样。
kotlin文档提供了三种方法, 第一个是在包中定义函数,没有类:
package com.example
fun f() = 1
第二个是使用@JvmStatic注释:
package com.example
class A{
@JvmStatic
fun f() = 1
}
第三个是使用伴侣对象
package com.example
clss A{
companion object{
fun f() = 1
}
}