我有向其传递对象的方法。在这个方法中,我检查它的类型,并根据类型对它执行一些操作并返回一个 Long。我已经尝试了所有我能想到的方法来做到这一点,但我总是收到几个编译器错误,告诉我它需要某个对象,但得到另一个对象。有人可以向我解释我做错了什么并引导我走向正确的方向吗?到目前为止我所尝试的如下:
override def getInteger(obj:Object) = {
if (obj.isInstanceOf[Object]) null
else if (obj.isInstanceOf[Number])
(obj:Number).longValue()
else if (obj.isInstanceOf[Boolean])
if (obj:Boolean) 1 else 0
else if (obj.isInstanceOf[String])
if ((obj:String).length == 0 | (obj:String) == "null")
null
else
try {
Long.parse(obj:String)
} catch {
case e: Exception => throw new ValueConverterException("value \"" + obj.toString() + "\" of type " + obj.getClass().getName() + " is not convertible to Long")
}
}
模式匹配会让它变得更好。
def getInteger(obj: Any) = obj match {
case n: Number => n.longValue
case b: Boolean => if(b) 1 else 0
case s: String if s.length != 0 && s != "null" => s.toLong
case _ => null
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)