データクラスを作成しました
data class Something (
val a : String,
val b : Object,
val c : String
)
プログラムの後半で、このデータクラスの文字列表現が必要なので、toStringメソッドを拡張しようとしました。
override fun Something.toString() : String = a + b.result() + c
ここでの問題は、最上位レベルの関数には適用できないため、toString関数を拡張(オーバーライド)できないことです。
カスタムデータクラスのtoStringメソッドを適切にオーバーライド/拡張する方法は?
Kotlinでは、拡張関数はメンバー関数をオーバーライドできません。また、 は静的に解決されます 。拡張関数fun Something.toString() = ...
を記述した場合、memberが常に勝つため、s.toString()
は解決されないことを意味します。
しかし、あなたの場合、toString
クラスは通常のクラスと同じようにボディを持つことができるため、Something
クラス本体内でdata
をオーバーライドすることを妨げるものはありません。
data class Something(
val a: String,
val b: Any,
val c: String
) {
override fun toString(): String = a + b + c
}