Как добавить аннотацию на основные параметры конструктора в kotlin - PullRequest
1 голос
/ 18 октября 2019

Имеет следующий класс:

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
)

1 Ответ

2 голосов
/ 18 октября 2019

изменить AnnotationTarget.PROPERTY на AnnotationTarget.VALUE_PARAMETER

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