Ответ
Можно использовать наследование или композицию. Но для data class наследование не рекомендуется, поэтому лучше создать новый data class с нужными полями и преобразовать существующий объект:
data class Original(val a: Int, val b: String, val c: Boolean)
data class Extended(
val original: Original,
val newField1: SomeType,
val newField2: AnotherType
)
// Использование:
val original = Original(1, "text", true)
val extended = Extended(original, someValue, anotherValue)
Или через деструктуризацию:
data class Extended(
val a: Int,
val b: String,
val c: Boolean,
val newField1: SomeType,
val newField2: AnotherType
) {
constructor(original: Original, f1: SomeType, f2: AnotherType) :
this(original.a, original.b, original.c, f1, f2)
}
Выбор зависит от того, нужно ли сохранять связь с оригинальным объектом.