У меня есть метод createOld
, который мне нужно переопределить, и я не могу его изменить. Я хотел бы использовать TypeTag
для типа соответствия шаблону в createNew
. Цель состоит в том, чтобы узнать, как вызвать createNew
из createOld
. Мое настоящее понимание заключается в том, что компилятор не имеет достаточной информации о типе A
в createOld
, если он еще не пришел с TypeTag[A]
.
object TypeTagFromClass {
class C1
class C2
// How to get TypeTag[A] needed by createNew?
def createOld[A](c: Class[A]): A = createNew ???
def createNew[A : TypeTag]: A = {
val result = typeOf[A] match {
case a if a =:= typeOf[C1] => new C1()
case a if a =:= typeOf[C2] => new C2()
}
result.asInstanceOf[A]
}
}