Kotlin 和 javax.validation.constraints.NotNull
Posted
技术标签:
【中文标题】Kotlin 和 javax.validation.constraints.NotNull【英文标题】:Kotlin and javax.validation.constraints.NotNull 【发布时间】:2018-01-29 15:13:08 【问题描述】:Kotlin 编译器从org.jetbrains.annotations
插入@Nullable
和@NotNull
,是否也可以插入javax.validation.constraints.NotNull
?
【问题讨论】:
当然可以。你只需要编写一个 Kotlin 编译器插件。您可以在这里查看示例:github.com/Takhion/sample-kotlin-compiler-plugin @Strelok 谢谢。也许已经有插件了? @Strelok Kotlin 编译器插件未记录,不受支持,不打算供 JetBrains 以外的任何人使用,并且保证将来会中断,所以请不要用“只需要编写”来回答任何 Kotlin 问题一个编译器插件”。 @Romper 你找到解决方案了吗?我也在追求同样的事情:) 一年过去了,有进展吗? 【参考方案1】:不,目前没有这样的编译器插件可用。 这是可用编译器插件的列表: https://kotlinlang.org/docs/reference/compiler-plugins.html
【讨论】:
【参考方案2】:是的,即使不明显也可以。
@field:NotNull val valName: String?
但我更喜欢使用:
@field:NotEmpty val valName: String
因为我认为破坏 Kotlin 提供的 null 安全的魔力并必须管理以后的可选值不是一个好主意。
【讨论】:
【参考方案3】:你可以像下面这样添加hibernate validator的依赖
dependencies
...
implementation("org.hibernate.validator:hibernate-validator")
...
之后,您可以import javax.validation.constraints.NotNull
【讨论】:
以上是关于Kotlin 和 javax.validation.constraints.NotNull的主要内容,如果未能解决你的问题,请参考以下文章
javax.validation.ConstraintViolationException
javax.validation.constraints 中的注释不起作用
javax.validation - BindingResult
如何在子类中覆盖@annotations (javax.validation)
Hibernate Validator表单验证异常javax.validation.UnexpectedTypeException问题