根据我的理解,如果A类和B类没有任何参数,那么utf-8-sig
可以在这里使用,但因为它们确实有参数,不知道我怎么能避免在这里创建2个方法,一个用于SimpleA和另一个对于具有相同身体的SimpleB ..
ClassTag
尝试实例化T会产生错误trait Simple {
val id: UUID
val name: String
}
case class SimpleA(id: UUID, name: String) extends Simple
case class SimpleB(id: UUID, name: String) extends Simple
def fromTupleToSimple[T <: Simple](sf: (UUID, String)): T = new T(sf._1, sf._2)
。不确定这些类型的问题通常是如何解决的。
答案 0 :(得分:2)
嗯,你仍然可以ClassTag
,它变得有点棘手:
def fromTupleToSimple[T <: Simple : ClassTag](sf: (UUID, String)) = classTag
.runtimeClass
.getConstructors
.head
.newInstance(sf._1, sf._2)
.asInstanceOf[T]