我正在尝试使用反射来定义一个函数来检查对象是否属于给定类型:
implicit class NoEraseInstanceOf(that: Any) {
def noEraseInstanceOf[T: ClassTag]= {
val targetClass = classTag[T]
targetClass.runtimeClass.isInstance(that)
}
}
它适用于大多数类型,但不适用于像Int这样的盒装基元类型。由于运行时类型,Int被视为java Integer,例如:
scala> val i = 1
i: Int = 1
scala> i.noEraseInstanceOf[Int]
res1: Boolean = false
scala> i.noEraseInstanceOf[Integer]
res2: Boolean = true
有没有办法实现这个目标?
谢谢:)