使用Java中的Kotlin单例

问题描述 投票:1回答:3

我已经阅读了这一点,我所看到的一切都说我应该能够做到这一点,所以必须有一些我想念的小东西。我已经将Java类转换为Kotlin:

object OrderTitle {
  @JvmOverloads
    fun generateMessage(context: Activity, otherParameter: AType? = null): AnotherType {
        // Do some things
   }
}

我用Java称它:

message = OrderTitle.generateMessage(activity, property);

并得到此错误:

error: non-static method generateMessage(Activity,Property) cannot be referenced from a static context
java android kotlin singleton
3个回答
3
投票

使用@JvmStatic注释您的函数,以便在编译时生成真正的静态java函数。


3
投票

您可以使用:

object OrderTitle {
    @JvmStatic
    fun generateMessage(context: Activity, otherParameter: AType? = null): AnotherType {
        // Do some things
   }
}

然后你可以从Java调用它:

OrderTitle.generateMessage(...)

1
投票

这样做的惯用方法是使用顶级功能,

@file:JvmName("ClassNameHere")
fun generateMessage(context: Activity, otherParameter: AType? = null): AnotherType {
    // Do some things
}

然后从java中使用它作为

ClassNameHere.generateMessage()
© www.soinside.com 2019 - 2024. All rights reserved.