如何在Kotlin中的主要构造函数参数上添加注释

时间:2019-10-18 15:22:04

标签: kotlin reflection kotlin-reflect

具有以下课程:

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

是喷气脑解析错误还是正常现象?


编辑

您可以在此处找到注释:

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

1 个答案:

答案 0 :(得分:2)

将AnnotationTarget.PROPERTY更改为AnnotationTarget.VALUE_PARAMETER

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