Получить аннотации kotlin из класса Java - PullRequest
0 голосов
/ 12 апреля 2019

У меня есть интерфейс с аннотацией:

@Target(AnnotationTarget.PROPERTY)
annotation class Foo()

interface Bah {
    @Foo val prop: String
}

Я реализую контекстный десериализатор Джексона, и мне нужно взять эту аннотацию из методов в интерфейсе.

   override fun createContextual(ctxt: DeserializationContext, property: BeanProperty?): JsonDeserializer<*> {
        val clzz = ctxt.contextualType.rawClass as Class<T>
        for (method in clzz.methods) {
            val anns = method.getAnnotationsByType(Foo::class.java)

ctxt.contextualType - это JavaType. Я получаю из него clzz, который дает мне класс типа Bah (то есть интерфейс). Я могу перебрать методы, которые включают «prop»; однако реквизит не имеет аннотаций.

Это работает, если я изменю сайт аннотации так, чтобы он выглядел следующим образом:

interface Bah {
    val prop: String
        @Foo() get

Однако это безобразно. Как я могу изменить вещи так, чтобы я мог получить их непосредственно из свойства интерфейса?

Спасибо

1 Ответ

3 голосов
/ 12 апреля 2019

Вы не можете. Как указано в , в документации указано , аннотации, нацеленные на свойство, не видны в Java (поскольку в Java нет понятия свойств).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...