У меня есть интерфейс с аннотацией:
@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
Однако это безобразно. Как я могу изменить вещи так, чтобы я мог получить их непосредственно из свойства интерфейса?
Спасибо