【发布时间】:2012-02-11 01:16:06
【问题描述】:
在 Scala 中,我通过其 Scala 清单获取给定类的类型并将其存储。我的问题是,我如何检查该类型以查看原始类是来自一个父类还是另一个?
由于类型擦除,我似乎无法对 t: Class[MyParentClass] 执行模式匹配,如下所示:
trait Product
trait PerishableProduct extends Product
class Fridge extends Product
class Banana extends PerishableProduct
def getProductType[P <: Product](implicit manifestP: Manifest[P]): Class[P] =
manifestP.erasure.asInstanceOf[Class[P]]
val isPerishable = getProductType[Fridge] match {
case x: Class[PerishableProduct] => true
case _ => false
}
// ^^ warning: non variable type-argument PerishableProduct in type pattern
// Class[PerishableProduct] is unchecked since it is eliminated by erasure
我还缺少另一个技巧吗?
【问题讨论】: