【发布时间】:2020-11-27 15:24:40
【问题描述】:
在 Scala 中,即使解决方案不优雅,是否可以实例化/创建泛型类型 T 的新对象?是否可以使用反射来实现这一点?
例如,我对以下内容感兴趣:
case class Person(name: String, age: Int)
假设我想执行以下操作来创建 Person 类型的对象:
def createObject[T](fieldValues: Seq[Any]): T = {
... T(fieldValues)
}
val person = createObject[Person](Seq("Bob", 20))
【问题讨论】:
-
Seq[Any]来自哪里?建议考虑类型类而不是不安全的运行时反射。 -
如果
T是一个案例类,您甚至可以在编译时执行此操作(使用编译时反射,即引擎盖下的宏)scastie.scala-lang.org/R7JABtX1RjizE7BsaPVqeQ
标签: scala generics reflection types scala-reflect