스칼라에서 스칼라 매니페스트를 통해 주어진 클래스의 유형을 가져 와서 저장하고 있습니다. 내 질문은 어떻게 원래 클래스가 한 부모 클래스 또는 다른 클래스에서 유래했는지 확인하기 위해 해당 형식을 확인할 수 있습니까? 나 때문에 형의 삭제의 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
내가 부족 또 다른 트릭이 있습니까?
와우 덕분에 Sciss - 훌륭합니다. 'classOf [GroupedPerishableProduct [_]] .isAssignableFrom (bananasType)' –