Как отфильтровать свойства класса данных по аннотации kotlin? - PullRequest
0 голосов
/ 19 апреля 2019

Реализация аннотации

@Target(AnnotationTarget.PROPERTY)
@Retention(AnnotationRetention.RUNTIME)
annotation class Returnable

Фиктивный класс данных

data class DataClass(
    val property: String
    @Returnable
    val annotatedProperty: String
)

Фильтрация Java-отражений не работает

this::class.memberProperties
        .filter{ it.annotations.map { ann -> ann.annotationClass }.contains(Returnable::class)}

1 Ответ

0 голосов
/ 20 апреля 2019

Kotlin-аннотация отличается от Java-аннотации.Так что работа с отражением Kotlin требует немного другого подхода по сравнению с классической Java.Здесь вы можете найти способ фильтрации свойств класса данных Kotlin по аннотациям Kotlin

DataClass("false","true")::class.members.filter {
     it.findAnnotation<Returnable>() != null
}
...