如何通过kotlin注释过滤数据类属性?

问题描述 投票:0回答:1

注释的实现

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

虚拟数据类

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

Java Reflections过滤不起作用

this::class.memberProperties
        .filter{ it.annotations.map { ann -> ann.annotationClass }.contains(Returnable::class)}
kotlin reflection annotations data-class
1个回答
0
投票

Kotlin注释与Java注释不同。因此,与经典java相比,使用Kotlin反射需要一些不同的方法。在这里,您可以找到一种通过Kotlin注释过滤Kotlin数据类属性的方法

DataClass("false","true")::class.members.filter {
     it.findAnnotation<Returnable>() != null
}
© www.soinside.com 2019 - 2024. All rights reserved.