I’ve been trying to do something with a model class in Kotlin that I’ve done many times before in Java, and I’ve been left without a clean way to do what I need.
Here’s what I’m trying to do in java:
import org.jetbrains.annotations.NotNull;
import java.util.UUID;
class User {
@NotNull
private final UUID userId;
@NotNull
private final String name;
@NotNull
private final String emailId;
User(@NotNull final UUID userId, @NotNull final String name, @NotNull final String emailId) {
this.userId = userId;
this.name = name.trim();
this.emailId = emailId.toLowerCase();
}
@NotNull
UUID getUserId() {
return userId;
}
@NotNull
String getName() {
return name;
}
@NotNull
String getEmailId() {
return emailId;
}
}
The key things to note are the calls to name.trim()
, and emailId.toLowerCase()
in the constructor. These calls ensure that every User
object created has a “valid” value for name
and emailId
.
Initially, in kotlin, this is what I had:
data class User(
val userId: UUID,
val name: String,
val emailId: String
)
The problem here is that I don’t see any way of putting in the calls to trim()
and toLowerCase()
.
Do you know of any ways to solve this problem? Please let me know: @gopalkri!