验证数据类参数Kotlin

如果我使用Kotlin数据类为我的值对象建模,处理验证的最佳方法是什么? 看起来像init块是唯一的逻辑地方,因为它在主构造函数之后执行。

data class EmailAddress(val address: String) { init { if (address.isEmpty() || !address.matches(Regex("^[a-zA-Z0-9]+@[a-zA-Z0-9]+(.[a-zA-Z]{2,})$"))) { throw IllegalArgumentException("${address} is not a valid email address") } } } 

使用JSR-303示例

缺点是需要加载时间编织

 @Configurable data class EmailAddress(@Email val address: String) { @Autowired lateinit var validator: Validator init { validator.validate(this) } }