Print Scala class members fields with types
object Implicits {
implicit class CaseClassToString(c: AnyRef) {
def toStringWithFields: String = {
val fields = (Map[String, Any]() /: c.getClass.getDeclaredFields) { (a, f) =>
f.setAccessible(true)
a + (f.getName -> f.get(c))
}
s"${c.getClass.getName}(${fields.mkString(", ")})"
}
}
}