【问题标题】:How to filter data class properties by kotlin annotation?如何通过kotlin注解过滤数据类属性?
【发布时间】:2019-04-19 20:51:24
【问题描述】:

注解的实现

@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)}

【问题讨论】:

    标签: kotlin reflection annotations data-class


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-14
      • 1970-01-01
      • 1970-01-01
      • 2021-07-15
      • 2019-08-22
      • 2020-01-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多