Как расширить dataclass с помощью toString

Я создал dataclass

data class Something ( val a : String, val b : Object, val c : String ) 

как позже в моей программе мне нужно строковое представление этого dataclass, я попытался расширить метод toString.

 override fun Something.toString() : String = a + b.result() + c 

Проблема здесь заключается в том, что она не позволяет расширить (переопределить) функцию toString, поскольку она не применима к функциям верхнего уровня.

Как правильно переопределить / расширить метод toString пользовательского dataclass?

В Kotlin функции расширения не могут переопределять функции-члены, более того, они разрешаются статически . Это означает, что если вы напишете функцию расширения fun Something.toString() = ... , s.toString() не будет разрешена к ней, потому что член всегда побеждает .

Но в вашем случае ничто не мешает вам переопределить toString внутри тела чего- Something типа, поскольку классы data могут иметь тела, подобные обычным классам:

 data class Something( val a: String, val b: Any, val c: String ) { override fun toString(): String = a + b + c }