Я часто ловлю себя на том, что делаю что-то вроде:
val json:Map[String,Any] = getJSON(...)
val v = json.get("username")
val uname = if ( v!=null ) v.asInstanceOf[toString] ) else null
тогда как я бы предпочел написать:
val uname = json.get[String]("username")
но get не принимает параметры типа, поэтому мой код слишком многословен:
val uname = json.get("username").asInstanceOf[String]
Как упростить доступ к контейнерам в подобных ситуациях? (В случае объектов в стиле JSON я делаю это МНОГО)
(null: Object).asInstanceOf[String]
работает нормально. Также обратите внимание, чтоget
наMap
возвращаетOption[T]
, в данном случаеOption[Any]
и никогда неnull
. Это может бытьSome(null)
, но неnull
. - person senia   schedule 21.01.2014Map[String, Any]
— см., например, мой ответ здесь а>. - person Travis Brown   schedule 22.01.2014