Comment puis-je Vérifier un Objet afin de déterminer son Type et de Retourner Un Objet Coulé

J'ai de la méthode à laquelle j'ai passer un objet. Dans cette méthode, j'ai vérifier c'est le type et selon le type je faire quelque chose avec elle et de retour d'un Long. J'ai essayé dans tous les sens, que je pense à le faire et j'ai toujours plusieurs erreurs du compilateur me dit qu'il s'attend à un certain objet, mais devient un autre. Quelqu'un peut-il m'expliquer ce que je fais de mal et de me guider dans la bonne direction? Ce que j'ai essayé jusqu'à présent est la suivante:

  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")        
          }
  }

OriginalL'auteur Russ Bradberry | 2010-04-17