title: How Can I Check an Object to See its Type and Return A Casted Object
body: <p>I have method to which I pass an object.  In this method I check it's type and depending on the type I do something with it and return a Long.  I have tried every which way I can think of to do this and I always get several compiler errors telling me it expects a certain object but gets another.  Can someone please explain to me what I am doing wrong and guide me in the right direction?  What I have tried thus far is below:</p>
  
  <pre><code>  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 =&gt; throw new ValueConverterException("value \"" + obj.toString() + "\" of type " + obj.getClass().getName() + " is not convertible to Long")        
            }
    }
  </code></pre>