Wesley Acheson
06/09/2020, 1:00 PMpublic class TotallyMadeUpClass{
private String username
public String getUsername(){ return this.username }
public void setUsername(String username) {
if (username.length > 10)
throw new IllegalArgumentException()
this.username = username}
}
Ruckus
06/09/2020, 1:06 PMclass TotallyMadeUpClass(userName: String) {
var userName = userName
set(value) {
require(value.length <= 10)
field = value
}
}
Wesley Acheson
06/09/2020, 1:07 PMRuckus
06/09/2020, 1:11 PMWesley Acheson
06/09/2020, 1:12 PMRuckus
06/09/2020, 1:21 PMPhilip Puffinburger
06/09/2020, 1:22 PMdata class TotallyMadeUpClass(val username: String) {
init {
require(username.length > 10)
}
}
That should validate whether you set it from the constructor or the copy method.Wesley Acheson
06/09/2020, 1:22 PMfun main() {
println(TotallyMadeUpClass("OK"))
println(TotallyMadeUpClass("This username should be rejected as its too long"))
}
data class TotallyMadeUpClass(val username:String) {
init {
require(username.length < 10) {"Testing to see if I can get a constraint message"}
}
}
TotallyMadeUpClass(username=OK)
Exception in thread "main" java.lang.IllegalArgumentException: Testing to see if I can get a constraint message
at com.blah.TotallyMadeUpClass.<init>(ConstraintTest.kt:10)
at com.blah.merchantapi.ConstraintTestKt.main(ConstraintTest.kt:5)
at com.blah.merchantapi.ConstraintTestKt.main(ConstraintTest.kt)
Matteo Mirk
06/09/2020, 1:54 PMclass Username(username: String) {
val user = "@${username.toLowerCase()}"
init {
require(username.length < 10) { "user name must be shorter than 10 characters" }
}
}
// usage
val u = Username("Joe")
u.user // @joe
notice the absence of val/var
in the constructor argument. The read-only property user
is initialized only after the init check passes