Scala 2.7:
val props = Map() ++ scala.collection.jcl.Conversions.convertMap(System.getProperties).elements
Хотя это требует некоторой настройки типов.Позвольте мне поработать над этим немного больше.
val props = Map() ++ scala.collection.jcl.Conversions.convertMap(System.getProperties).elements.asInstanceOf[Iterator[(String, String)]]
Хорошо, это было легко.Позвольте мне поработать над 2.8 сейчас ...
import scala.collection.JavaConversions.asMap
val props = System.getProperties() : scala.collection.mutable.Map[AnyRef, AnyRef] // or
val props = System.getProperties().asInstanceOf[java.util.Map[String, String]] : scala.collection.mutable.Map[String, String] // way too many repetitions of types
val props = asMap(System.getProperties().asInstanceOf[java.util.Map[String, String]])
Многословие, конечно, можно уменьшить с помощью пары импортов.Прежде всего, обратите внимание, что Map
будет изменяемой картой на 2.8.С другой стороны, если вы преобразуете карту обратно, вы получите исходный объект.
Теперь я понятия не имею, почему Properties
реализует Map<Object, Object>
, учитывая, что в javadocs четко указан этот ключ изначение String
, но вы идете.Это приводит к тому, что неявный вариант становится менее привлекательным.В этом случае альтернатива является наиболее краткой из них.
EDIT
Scala 2.8 только что получил неявное преобразование из Properties
в mutable.Map[String,String]
, чтоделает большую часть этого кода спорным.