Я прочитал об этом, и все, что я вижу, говорит, что я должен быть в состоянии сделать это, поэтому, должно быть, есть кое-что, что я пропускаю Я преобразовал класс 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
Аннотируйте вашу функцию с помощью @JvmStatic
чтобы при компиляции генерировалась настоящая статическая функция Java.
Ты можешь использовать:
object OrderTitle {
@JvmStatic
fun generateMessage(context: Activity, otherParameter: AType? = null): AnotherType {
// Do some things
}
}
и тогда вы можете вызвать его из Java:
OrderTitle.generateMessage(...)
Идиоматический способ сделать это с помощью функций верхнего уровня,
@file:JvmName("ClassNameHere")
fun generateMessage(context: Activity, otherParameter: AType? = null): AnotherType {
// Do some things
}
Тогда из Java просто используйте его как
ClassNameHere.generateMessage()