Давайте используем общий класс Array[T]
в качестве примера:
import scala.reflect.ClassTag
{
val t = implicitly[ClassTag[String]]
val ts = implicitly[ClassTag[Array[String]]]
Seq(t, ts).foreach(println)
}
это даст следующий вывод:
java.lang.String
Array[java.lang.String]
Можно заметить, что тип String
былне стирается из-за того, что Array имеет член специального типа.
Моя проблема в том, что тип String
не известен во время компиляции. И у вас есть только ClassTag неизвестного типа T
, вы все еще можете получить специализированный ClassTag массива [T]?
например
def arrayClassTagOf[T](implicit ev: ClassTag[T]): ClassTag[Array[T]] = ...
такой, что:
arrayClassTagOf[String] == implicitly[ClassTag[Array[String]]
arrayClassTagOf[Int] == implicitly[ClassTag[Array[Int]]
и т. Д.
Большое спасибо за ваше мнение!