Kotlin 数据类强制值约束

Wes*_*Wes 2 validation kotlin data-class

kotlin 中是否有任何方法可以对数据类值进行约束。我正在寻找类似于以下 java.lang.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}
}
Run Code Online (Sandbox Code Playgroud)

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

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 }


}
Run Code Online (Sandbox Code Playgroud)

Ser*_*gey 5

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

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

如果值为false ,它会抛出IllegalArgumentException