В Java мы можем создать класс утилит следующим образом:
final class Utils {
public static boolean foo() {
return false;
}
}
Но как это сделать в Котлине?
Я пытаюсь использовать функции внутри object
:
object Utils {
fun foo(): Boolean {
return false
}
}
Но при вызове этого метода из кода Java к нему нужно добавить INSTANCE
. Пример: Utils.INSTANCE.foo()
.
Затем я изменяюсь, чтобы объявить ее как функцию верхнего уровня (без class
или object
):
@file:JvmName("Utils")
@file:JvmMultifileClass
fun foo(): Boolean {
return true
}
Затем я могу вызвать Utils.foo()
из кода Java. Но из кода Kotlin я получил Unresolved reference
ошибку Unresolved reference
компилятора. Это позволяет только напрямую использовать функцию foo()
(без префикса Utils
).
Итак, каков наилучший подход для объявления класса утилит в Котлине?