Kotlin Data Class 强制执行值约束

Kotlin Data Class enforce value constraints

kotlin 中是否有任何方法可以限制 data 类 值。我正在寻找类似于以下 java 的内容。它不需要是非法参数异常,并且约束不一定在 String 字段上。

public class TotallyMadeUpClass{
    private String username
    public String getUsername(){ return this.username }

    //Constrain the value somehow.
    public void setUsername(String username) {
        if (username.length > 10)
        throw new IllegalArgumentException()
        this.username = username}
}

或者这个例子更接近我想要实现的目标。

public class TotallyMadeUpClass{
    private final String username;

    TotallyMadeUpClass(String username, OtherParams others){
        if (username.length > 10)
            throw new IllegalArgumentException()
        this.username = username
    }

    public String getUsername(){ return this.username }


}

您可以像这样使用初始化块:

data class Cow(val hasMilk: Boolean) {
    init {
        if (!hasMilk) {
            throw IllegalArgumentException("Cows must have milk")
        }
    }
}

在 Kotlin 中应用约束的更惯用的方法是使用 require 函数:

data class TotallyMadeUpClass(val username: String) {
    init {
        require(username.length > 10) { "Length must be greater than 10" }
        // ...
    }
}

如果值为 false,它会抛出 IllegalArgumentException