与えられたクラス
sealed abstract class A
case class B(param: String) extends A
case class C(param: Int) extends A
trait Z {}
class Z1 extends Z {}
class Z2 extends Z {}
def zFor[T <: A : Manifest]: Option[Z] = {
val z = manifest[T].erasure
if (z == classOf[B]) {
Some(new Z1)
} else
if (z == classOf[C]) {
Some(new Z2)
} else {
None
}
}
ここでのパターン マッチングの問題は、バイトコードでパターン マッチング テーブルを作成できないことだと思います。この問題の回避策はありますか? コンパイラによってマニフェストで生成された Int を使用できますか?