Validation 在Kotlin中,根据属性的类型限制注释目标

Validation 在Kotlin中,根据属性的类型限制注释目标,validation,kotlin,reflection,annotations,Validation,Kotlin,Reflection,Annotations,在Kotlin中,与在Java中一样,我们可以使用元注释(例如@Target(AnnotationTarget.VALUE_参数)将注释限制为仅用于特定类型的元素,因此注释只能应用于值参数) 我的用例是希望使用反射来验证属性(例如,@MustNotBeEmpty name:String),并且我希望根据属性的类型限制注释的类型(例如,@MustBePositive number:Int只能应用于“Int”属性)。关于基于反射的验证可行性的评论 是否有任何方法可以在编译时实现这一点,或者我需要在运

在Kotlin中,与在Java中一样,我们可以使用元注释(例如
@Target(AnnotationTarget.VALUE_参数)
将注释限制为仅用于特定类型的元素,因此注释只能应用于值参数)

我的用例是希望使用反射来验证属性(例如,
@MustNotBeEmpty name:String
),并且我希望根据属性的类型限制注释的类型(例如,
@MustBePositive number:Int
只能应用于“Int”属性)。关于基于反射的验证可行性的评论


是否有任何方法可以在编译时实现这一点,或者我需要在运行时检查这一点

注释框架中没有允许这样做的内容
kotlin.annotation.AnnotationTarget
具有广泛的允许值,可以非常细粒度地限制注释的放置(例如“仅在getter上”),但它是一个封闭枚举。没有采用任何类型参数的注释


您所能做的就是编写一个编译器插件,在编译时手动执行这些检查。

只有在有证据的情况下,您才会接受“否”,不是吗?至于可行性:这不是
javax.validation.*
annotation(相当成功地)使用的方法吗?是要在setter上进行验证,还是在填充完完整对象后对其进行验证?