【发布时间】:2014-12-02 22:49:07
【问题描述】:
我一直在尝试想出一个函数来检查参数是否属于运行时给定的类型。
考虑以下示例中的函数is(“is of class”的缩写):
object TestClass {
abstract class P()
case class A() extends P
case class B() extends P
// ...
case class Z() extends P
def is[VALUE,TYPE](value:VALUE, T:TYPE): Boolean = {
value match {
case T => true
case _ => false
}
}
def main(args: Array[String]) {
val a = new A()
val b = new B()
println(a.isInstanceOf[A]) // true
println(is(a, A)) // false
println(is(b, B)) // false
}
}
我已经阅读过有关 ClassTag 和 getClass 的信息,但我是 Scala 新手,似乎无法正确应用它们。应该如何为所有println-行实现is以返回true?
【问题讨论】:
标签: class scala reflection