Предположим, что я хочу, чтобы одно или два поля включались в сгенерированные выражения equals и hashCode (или, возможно, исключали одно или несколько полей). Для простого класса, например:
data class Person(val id: String, val name: String)
Groovy имеет следующее значение:
@EqualsAndHashCode(includes = 'id')
Ломбок имеет следующее:
@EqualsAndHashCode(of = "id")
Каков идиоматический способ сделать это в Котлине?
Мой подход до сих пор
data class Person(val id: String) {
// at least we can guarantee it is present at access time
var name: String by Delegates.notNull()
constructor(id: String, name: String): this(id) {
this.name = name
}
}
Просто чувствует себя не так, хотя... Я действительно не хочу, чтобы name
изменялся, а дополнительное определение конструктора было уродливым.