Kotlin实现无需创建实例调用方法(类似Java static效果)咨询
Kotlin 实现 Java 风格静态方法的可行方案
Kotlin 没有原生的 static 关键字,可通过以下三种常用方式实现无需实例化直接调用方法的效果,结合你提供的示例代码改造如下:
方案1:伴生对象(最常用的类内静态实现)
将方法放在类的 companion object 代码块中,即可直接通过类名调用:
fun main() { // 无需创建Ob1实例,直接通过类名调用 Ob1.try1() } class Ob1{ companion object { fun try1() = println("try 1S") // 其他静态属性/方法可放在这个块内 } }
如果需要支持 Java 侧以原生静态方法的形式调用,给方法添加 @JvmStatic 注解即可。
方案2:包级(顶层)函数
如果方法不需要和 Ob1 类的实例成员绑定,可以直接定义在.kt文件的顶层,不需要隶属于任何类,调用时无需加类名前缀:
fun main() { // 直接全局调用 try1() } // 顶层函数,不属于任何类 fun try1() = println("try 1S") class Ob1{ // 类的普通成员定义在这里 }
方案3:object 声明单例类
如果这个类本身就不需要创建多个实例,所有方法都是静态性质的,直接用 object 关键字声明类即可:
fun main() { Ob1.try1() } // 单例类,全局仅存在一个实例,方法可直接通过类名调用 object Ob1{ fun try1() = println("try 1S") }
选型参考
- 方法属于特定类的业务范围,需要和类绑定:选伴生对象
- 方法是通用工具方法,不需要绑定特定类:选包级函数
- 类本身不需要多实例,所有方法都是静态性质:选object单例类
内容的提问来源于stack exchange,提问作者Avihay
相关产品推荐
相关产品推荐

