如何通过 kotlin 注释过滤数据 class 属性?
How to filter data class properties by kotlin annotation?
注解的实现
@Target(AnnotationTarget.PROPERTY)
@Retention(AnnotationRetention.RUNTIME)
annotation class Returnable
虚拟数据class
data class DataClass(
val property: String
@Returnable
val annotatedProperty: String
)
Java 反射过滤不起作用
this::class.memberProperties
.filter{ it.annotations.map { ann -> ann.annotationClass }.contains(Returnable::class)}
Kotlin 注释与 Java 注释不同。因此,与 classic java 相比,使用 Kotlin 反射需要一些不同的方式。在这里,您可以找到一种通过 Kotlin 注释
过滤 Kotlin 数据属性的方法 class
DataClass("false","true")::class.members.filter {
it.findAnnotation<Returnable>() != null
}
注解的实现
@Target(AnnotationTarget.PROPERTY)
@Retention(AnnotationRetention.RUNTIME)
annotation class Returnable
虚拟数据class
data class DataClass(
val property: String
@Returnable
val annotatedProperty: String
)
Java 反射过滤不起作用
this::class.memberProperties
.filter{ it.annotations.map { ann -> ann.annotationClass }.contains(Returnable::class)}
Kotlin 注释与 Java 注释不同。因此,与 classic java 相比,使用 Kotlin 反射需要一些不同的方式。在这里,您可以找到一种通过 Kotlin 注释
过滤 Kotlin 数据属性的方法 classDataClass("false","true")::class.members.filter {
it.findAnnotation<Returnable>() != null
}