0
я могу захватить тип некоторого типа параметра класса следующим образом:Как указать SCALA параметр типа ограничения, когда также указав TypeTag
import scala.reflect.runtime.universe._
case class X[T:TypeTag]() {
val typ = typeOf[T]
}
Но как я могу сделать то же самое, если я хочу, чтобы обеспечить соблюдение типа ограничение:
trait SomeClass
case class X[T<:SomeClass]() {
val typ = typeOf[T]
}
Это не работает:
case class X[T<:SomeClass with TypeTag]() { // TypeTag takes parameters
val typ = typeOf[T]
}
ни делает:
case class X[T<:SomeClass with TypeTag[T]]() {
val typ = typeOf[T]
}
X[String]()// type arguments [String] do not conform to method apply's type parameter bounds [T <: SomeClass with reflect.runtime.universe.TypeTag[T]]