在Kotlin中没有静态关键字。

在Kotlin中表示静态Java方法的最佳方法是什么?


当前回答

这对我也有用

object Bell {
    @JvmStatic
    fun ring() { }
}

从芬兰湾的科特林

Bell.ring()

从Java

Bell.ring()

其他回答

A.旧Java方式:

声明一个伴随对象来包含一个静态方法/变量 类Foo { 伴随对象{ fun foo() = println(" foo ") Val bar ="bar" } } 使用: Foo. Foo() //输出Foo println(Foo.bar) //输出bar



B.新的Kotlin方式

直接在文件上声明,而不需要在.kt文件上使用类。 fun foo() = println(" foo ") Val bar ="bar" 使用方法/变量的名称。(导入后) 使用: foo() //输出foo println(bar) //输出bar


简单来说,你可以使用“同伴对象”进入Kotlin静态世界,比如:

  companion object {
    const val TAG = "tHomeFragment"
    fun newInstance() = HomeFragment()
}

要创建一个常量字段,请使用代码中的“const val”。 但是尽量避免使用静态类,因为它会给使用Mockito进行单元测试带来困难。

使用对象表示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。

有两种方法可以在Kotlin中应用静态

首先在类下创建一个伴生对象

为例:

class Test{
    companion object{
          fun isCheck(a:Int):Boolean{
             if(a==0) true else false
          }
     }
}

你可以称这个函数为

Test.Companion.isCheck(2)

另一种方法是创建一个对象类

object Test{
       fun isCheck(a:Int):Boolean{
            if(a==0) true else false
       }
}

编码快乐!

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
}
}