首页 > 解决方案 > 如何在kotlin中的主要构造函数参数上添加注释

问题描述

具有以下课程:

data class TestMsg(
    @Parse(";") 
    val someArray: Array<String>
)

并尝试使用

TestMsg::class.primaryConstructor!!.parameters.forEach{
    println(it.findAnnotation<Parse>())
}

没有找到注释。我必须移动参数前面的注释才能使其正常工作

data class TestMsg(
    @Parse(";") val someArray: Array<String>
)

这是jetbrains的解析错误还是正常行为?


编辑

你可以在这里找到注释:

@Target(AnnotationTarget.FIELD, AnnotationTarget.PROPERTY, AnnotationTarget.TYPE_PARAMETER)
@Retention(AnnotationRetention.RUNTIME)
annotation class Parse(
    val delimiter: String
)

标签: kotlinreflectionkotlin-reflect

解决方案


将 AnnotationTarget.PROPERTY 更改为 AnnotationTarget.VALUE_PARAMETER

@Target(AnnotationTarget.FIELD, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.TYPE_PARAMETER)
@Retention(AnnotationRetention.RUNTIME)
annotation class Parse(
    val delimiter: String
)

推荐阅读