Я пытаюсь создать метод c stati в Kotlin, который позволяет правильно взаимодействовать с Java.
Контекст: я хочу передать ссылку java.lang.reflect.Method
на org.springframework.expression.spel.support.StandardEvaluationContext#registerFunction
поэтому добавьте пользовательскую функциональность в язык выражений Spring.
Я создал объект-компаньон:
companion object {
@JvmStatic
fun foo(): Boolean = true
}
И получу ссылку через
Companion::foo.javaMethod!!
или
Companion.javaClass.getMethod("foo").modifiers
Однако, когда я вызываю Modifier.isStatic
для результата, он возвращает false
, и когда я пытаюсь вычислить выражение с помощью зарегистрированной функции, я также получаю
org.springframework.expression.spel.SpelEvaluationException:
EL1039E: Only static methods can be called via function references.
The method '…$Companion.foo' referred to by name 'foo' is not static.
Как я могу это исправить?