我可以检查Scala对象是否属于给定类型,此类型是否为盒装基元?

时间:2016-09-16 12:00:18

标签: scala reflection

我正在尝试使用反射来定义一个函数来检查对象是否属于给定类型:

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

有没有办法实现这个目标?

谢谢:)

0 个答案:

没有答案