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

时间:2017-05-29 13:10:12

标签: scala

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

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

2 个答案:

答案 0 :(得分:6)

如果仅返回IntLong的方法被输入为Object,则库API中存在实际问题。但是,你可以处理它。 但是,以下模式匹配应该起作用:

val five: Object = 5 //your method output

five match {
  case n: java.lang.Integer => doSomethingWithInt(n)
  case n: java.lang.Long => doSomethingWithLong(n)
}

您需要使用java.lang,因为IntLong实际上是基本类型intlong,因此它们不会继承Object }。

答案 1 :(得分:0)

使用object.asInstanceOf[T]转换为所需类型:)