Wie Kann ich Überprüfen, ein Objekt zu Sehen, seine Art und Rückkehr Eine Umgewandelte Objekt
Habe ich eine Methode, durch welche ich ein Objekt übergeben. In dieser Methode überprüfe ich es geben und je nach der Art Mach ich was damit und eine Lange. Ich habe versucht, in jeder Weise, die ich denken kann, dies zu tun und ich bekomme immer mehrere compiler-Fehler sagte mir, dass es erwartet, dass ein bestimmtes Objekt, sondern bekommt eine andere. Kann mir jemand bitte erklären, was ich falsch mache und mich in die richtige Richtung? Was ich versucht habe so weit unten ist:
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")
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Pattern matching würde es noch viel schöner.
if(b) 1.longValue else 0.longValue
if(b) 1L else 0L
.getInteger(3)
dann bekommt man ein Objekt mit TypAny
, wie man es als integer ?Dieser code ruft für ein Treffer:
Folgte meiner eigenen Ratschläge aus meinem Kommentar zu meiner ursprünglichen Antwort...
Könnte dies der Anfang sein:
(Ich don ' T haben, etwas zu überschreiben, und übersprang die try/catch-aus Platzgründen)