假设我有一个这样的数据类:
data class MyData(val something: Int, val somethingElse : String) {
init {
require(something > 20) { "Something must be > 20" }
require(StringUtils.isNotEmtpy(somethingElse)) { "Something else cannot be blank" }
}
}
我希望能够在调用该方法somethingElse
之前应用一个函数。init
在这种情况下,我想\n
从 String 中删除所有字符,somethingElse
同时保持字段的不变性(即somethingElse
必须仍然是 a val
)。我想在 Java 中做类似的事情:
public class MyData {
private final int something;
private final String somethingElse;
public MyDate(int something, String somethingElse) {
this.something = something;
this.somethingElse = StringUtils.replace(somethingElse, '\n', '');
Validate.isTrue(something > 20, "...");
Validate.isTrue(StringUtils.isNotEmtpy(this.somethingElse), "...");
}
// Getters
}
我当然可以在 Kotlin 中创建一个普通类(即没有数据类),但我想MyData
成为一个数据类。
在 Kotlin 中执行此操作的惯用方式是什么?