Используя отражение, я определил тип вещи во время выполнения, t: Type.Теперь я хочу создать новый тип опции [t].Как я могу это сделать?
val t: Type = ...
val optT: Type = ??? // Option of whatever t is
Почему я хочу это: у меня есть функция-обработчик, которая работает с типом.Во время компиляции у меня есть что-то вроде этого:
trait Thing { name: String }
case class BigThing(name: String) extends Thing
case class Stuff[T <: Thing]( id: Int, maybeThing: Option[T] ) // contrived
def handler( t: Type ): Output = {...}
Я могу отразить, что если у меня есть класс типа Stuff, у него есть член MaybeThing типа Object [T] или даже Object [Thing].Во время выполнения, скажем, я могу определить, что у конкретного объекта есть T = BigThing, поэтому я хочу передать Option [BigThing], а не Option [T] или Option [Thing] в handler ().Вот почему я пытаюсь создать тип исполнения Option [BigThing].
Я попробовал следующее, но Scala это не понравилось:
val newType = staticClass(s"Option[${runtimeTypeTAsString}]")