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。
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。