Scala:类型化方法 returns 所提供类型的对象

Scala: Typed method that returns object of the provided Type

大家好,

我需要创建一个 Typed Class 和一个 Typed 函数来解析 Array[String] 和 returns Array[OutputType]

class Data()
class IntData(var element: Int) extends Data
class BoolData(var element: Boolean) extends Data

class ArrayParser[OutputType <: Data]() {
    def parse(in: Array[String]): Array[OutputType] = {
        in.map(s => parseRecord(s))
    }
}

我试过:

    def parse(in: Array[String]): Array[OutputType] = {
        in.map(s => {
            import scala.reflect.runtime.universe._
            if (typeOf[OutputType] =:= typeOf[IntData])
                new IntData(s.toInt)
            else
                new BoolData(s.toBoolean)
        })
    }

但我收到错误:类型数组[Data] 的表达式不符合预期类型数组[OutputType]

我该怎么做才能达到要求?

感谢您的帮助。

为什么不定义一个类型类来将字符串解析为相关类型?

trait Parser[T <: Data] { 
  def parse(s: String): T
}

implicit val intParser: Parser[IntData] = ???
implicit val boolParser: Parser[BoolData] = ???

def parse[T <: Data : Parser](a: Array[String]): Array[T] = { 
  val p = implicitly[Parser[T]]
  a.map(s => p.parse(s))
}

此外,我建议将 Data 设为密封特征及其实现案例 类。