import scala.reflect.runtime.universe._
import scala.reflect.ClassTag
class A
class B
def foo[A](x: A) = typeOf[A] match {
case x:A => println("this an A")
case _ => println("no match")
}
}
但是这将证明无用,因为不可能匹配,我得到:
fruitless type test: a value of type runtime.universe.Type cannot also be a A
我希望foo
获取任何type
类,从基本类型到自定义类。我该怎么做?
答案 0 :(得分:2)
您可以使用ClassTag
以下方式实现目标
import scala.reflect.ClassTag
def foo[A: ClassTag](x: A) = x match {
case x: A => println(s"this an ${x.getClass}")
case _ => println("no match")
}
A
可以是任何类型。