在Java中,我会在域对象中创建构造函数时进行验证,但在使用kotlin的数据类时,我不知道如何进行类似的验证.我可以在应用程序服务中做到这一点,但我想坚持域对象及其逻辑.最好以身作则.

public class Example {

    private String name;

    Example(String name) {
        validateName(name);
        this.name = name;
    }
}

In Kotlin I have just a data class is there a way to do it similarly to Java style?

data class Example(val name: String)

推荐答案

使用100可以获得类似的效果

data class Example private constructor(val name: String) {
    companion object {
        operator fun invoke(name: String): Example {
            //validateName
            return Example(name)
        }
    }
}

...

val e = Example("name")
e.name //validated

Kotlin相关问答推荐

Kotlin—从列表中枚举属性计算不同值的数量

带有Spring Boot和Kotline的可嵌入实体

如何将消费者放入 Kotlin 的 map 中?

如何将 `when` 与 2 个密封类一起使用并获取内部值?

如何从kotlin中的ArrayList中删除所有元素

Kotlin 插件错误:无法为类 org.jetbrains.kotlin.gradle.tasks.KotlinCompile 生成代理类

在粘贴时将 java 转换为 kotlin

retrofit 响应代码 405 并带有消息method not allowed here

如何通过反射使用 Kotlin 对象

验证和 DDD - kotlin 数据类

使用 clear() 删除 EncryptedSharedPreferences 不起作用

Kotlin 扩展函数 - 覆盖现有方法

API 26 上未显示 Android 通知

如何在协程之外获取 Flow 的值?

在 gradle android library kotlin 项目中禁用 META-INF/* 生成

任何处理器都无法识别以下选项:'[kapt.kotlin.generated, room.incremental]'

如何将 CameraView 与 Jetpack Compose 一起使用?

在 Kotlin 中编写一个等于 Int.MIN_VALUE 的十六进制整数文字

在 IntelliJ Idea 中未为 Kotlin @ConfigurationProperties 类生成 spring-configuration-metadata.json 文件

如何在 spring-boot Web 客户端中发送请求正文?