动态地将Scala对象转换为Int或Long

Abh*_*hek 0 scala

Object从方法中得到一个值.我知道这个对象将是类型Int或类型Long,但我事先并不知道它将是哪一个.我如何将其投射到IntLong

不幸的是,我无法更改提供此方法的方法的返回类型,因此无法作为解决方案..

Cyr*_*pet 6

如果只返回Ints或Longs 的方法,则库API中存在一个实际问题Object.但是,你可以处理它.但是,以下模式匹配应该起作用:

val five: Object = 5 //your method output

five match {
  case n: java.lang.Integer => doSomethingWithInt(n)
  case n: java.lang.Long => doSomethingWithLong(n)
}
Run Code Online (Sandbox Code Playgroud)

您需要使用java.lang,因为IntLong实际上的基本类型intlong,所以他们不继承Object.