在Kotlin中没有静态关键字。
在Kotlin中表示静态Java方法的最佳方法是什么?
在Kotlin中没有静态关键字。
在Kotlin中表示静态Java方法的最佳方法是什么?
当前回答
使用对象表示val/var/方法使静态。你也可以用object代替单例类。如果你想在类内部创建静态,你可以使用companion
object Abc{
fun sum(a: Int, b: Int): Int = a + b
}
如果你需要从Java调用它:
int z = Abc.INSTANCE.sum(x,y);
在Kotlin中,忽略INSTANCE。
其他回答
在Java中,我们可以这样写
class MyClass {
public static int myMethod() {
return 1;
}
}
在Kotlin中,我们可以用下面的方式写
class MyClass {
companion object {
fun myMethod() : Int = 1
}
}
在Kotlin中,一个同伴被用作静态。
除了迈克尔安德森的回答,我在我的项目中有其他两种编码方式。
第一:
你可以把所有变量白到一个类。 创建一个名为Const的kotlin文件
object Const {
const val FIRST_NAME_1 = "just"
const val LAST_NAME_1 = "YuMu"
}
您可以在kotlin和java代码中使用它
Log.d("stackoverflow", Const.FIRST_NAME_1)
第二:
您可以使用Kotlin的扩展函数 创建了一个名为Ext的kotlin文件,下面的代码是Ext文件中的所有代码
package pro.just.yumu
/**
* Created by lpf on 2020-03-18.
*/
const val FIRST_NAME = "just"
const val LAST_NAME = "YuMu"
你可以在kotlin代码中使用它
Log.d("stackoverflow", FIRST_NAME)
您可以在java代码中使用它
Log.d("stackoverflow", ExtKt.FIRST_NAME);
使用@JVMStatic Annotation
companion object {
// TODO: Rename and change types and number of parameters
@JvmStatic
fun newInstance(param1: String, param2: String) =
EditProfileFragment().apply {
arguments = Bundle().apply {
putString(ARG_PARAM1, param1)
putString(ARG_PARAM2, param2)
}
}
}
所有静态成员和函数都应该在伴生块中
companion object {
@JvmStatic
fun main(args: Array<String>) {
}
fun staticMethod() {
}
}
java静态方法到kotlin等效方法的确切转换如下所示。例:这里util类有一个静态方法,它在java和kotlin中都是等效的。@JvmStatic的使用非常重要。
Java代码:
class Util{
public static String capitalize(String text){
return text.toUpperCase();}
}
芬兰湾的科特林代码:
class Util {
companion object {
@JvmStatic
fun capitalize(text:String): String {
return text.toUpperCase()
}
}
}