【发布时间】:2020-07-27 11:38:32
【问题描述】:
我有一个案例类,我有一个场景,我想在字符串中获取案例类的所有字段值,用 - 分隔,如果案例类的值不存在,在这种情况下使用空字符串。我能够这样做但是使用反射,有没有其他方法可以不使用反射?
case class Test(
a: String,
b: Int
)
val test = Test( a = "aValue",
b = 1
)
val result = test.getClass.getDeclaredFields
.map { field =>
field.setAccessible(true)
Option(field.get(test)).getOrElse("")
}
.mkString("-")
aValue-1 应该是结果
【问题讨论】:
-
如果覆盖 toString 方法会怎样?
-
所有案例类都隐式实现了 ProductN 特征。您可以使用 productIterator 获取所有字段的 Iterator。或者,您可以覆盖更传统的 toString 方法。