如果在编译时擦除所有类型,Scala如何进行类型匹配?

时间:2018-05-13 05:31:46

标签: scala type-erasure

Scala's documentation Scala的类型在编译时被删除。那怎么做类型匹配呢?例如,这个匹配语句如何可能:

myVar match {
  case x: Bar => ???
  case x: Foo => ???
  case _      =>
}

当然,字节代码需要能够保留关于myVar类型或类的一些信息。

1 个答案:

答案 0 :(得分:2)

类型构造函数的类型参数将被删除。您的示例中没有类型构造函数,因此不会删除任何内容。

请注意,即使删除了类型参数,也可以明确要求TypeTag以便对其进行重新设定。