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

javax.validation - BindingResult

如何在子类中覆盖@annotations (javax.validation)

Hibernate Validator表单验证异常javax.validation.UnexpectedTypeException问题