Quero usar uma classe de dados com uma propriedade que tenha um valor padrão no construtor com base em outro parâmetro do construtor. Funciona exatamente como eu quero se eu usar uma classe normal (não de dados):
import java.time.Clock
import java.time.Instant
class MyObject(
clock: Clock = Clock.systemUTC(),
val name: String,
val timeCreated: Instant = clock.instant()
)
fun main() {
val a = MyObject(name = "Fred")
println(a.timeCreated)
}
Mas se eu tentar fazer um data class
, ele não compila:
Primary constructor of data class must only have property ('val' / 'var') parameters.
Não quero que o clock
parâmetro seja uma propriedade, pois ele é usado apenas para testes. Mas quero que a classe seja a data class
com seu autogerado toString
, copy
e outros recursos. O que posso fazer?