0
基本型の内部に完全型(型パラメータ付き)を取得することは可能ですか?次の例は、問題を示しています。 TODOを参照してください:基本クラス内にパラメータを持つ型を取得する方法
import scala.reflect.api.Types
abstract class BaseClass {
def getType: Type = ??? //TODO how to implement
}
case class Child1[M](model: M) extends BaseClass
case class Child2(p: Int) extends BaseClass
...
val c1 = Child1("Hello")
val c2 = Child2(10)
val xs = List(c1, c2)
xs foreach { e: BaseClass =>
println(e.getType)
}
// out:
// com.project.Child1[java.lang.String]
// com.project.Child2
// ...
を与える 'ケースクラスChild3 [M、N](モデル:M、ノード1:N)はBaseClass'を拡張しますか? – talex
'BaseClass'に' getType'を実装したい場合、 'BaseClass'は' M'、 'N'などの型を知る必要があります。もちろん、それぞれのクラスで 'getType'を実装することができます。必要なのは、それぞれの型パラメータに対して' TypeTag'だけです。 –
また、WeakTypeTagを使用することもできます。 –