У меня есть метод, которому я передаю объект. В этом методе я проверяю его тип и, в зависимости от типа, делаю с ним что-то и возвращаю 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")
}
}