我有一个看起来像这样的函数:
private def readDS[T <: Product : TypeTag](path: String): Dataset[T] = {
spark
.read
.csv(path)
.as[T]
}
T 始终是案例类
我正在尝试使用
CC = Class.forName(“ SomeCaseClass”) //其中CC(案例类)应作为T传递给readDS函数,我对此有疑问
我有个主意要做这样的事情:
CC match {
case VALIDCC // check if VALIDCC is a subtype of Product and TypeTag[VALIDCC] is available // => {
readDS[VALIDCC]("/path/to/file")
}
case _ => logger.error("provided class can't be used to cast a DF")
但是我不知道如何在Scala中匹配类型以及如何检查类型是否为Product的子类型,以及是否在使用范围内使用隐式val tt = TypeTag [CC] CC在readDS功能中。