我正在尝试在 Scala 中从配置文件中获取列表,例如something.conf
with TypeSafe
。
在something.conf
我设置参数:
mylist=["AA","BB"]
在我的 Scala 代码中,我这样做:
val myList = modifyConfig.getStringList("mylist")
简单的配置参数工作正常,但有人可以给我一个如何提取列表的例子吗?
正如@ghik 所说,Typesafe Config 库是基于Java的,所以你得到的是 ajava.util.List[String]
而不是scala.List[String]
. 因此,要么您转换为 a scala.List
:
import collection.JavaConversions._
val myList = modifyConfig.getStringList("mylist").toList
或者(可能不那么尴尬)你寻找一个 Scala 库。工具 wiki至少链接到这些维护的库:
(免责声明:我不使用这些,因此您必须检查它们是否支持您的类型和格式)
作为记录,由于 Scala 2.12JavaConversions
已被弃用,因此您可以:
import collection.JavaConverters._
val myList: List[String] = modifyConfig.getStringList("mylist").asScala.toList
您可以尝试我的 scala 包装器https://github.com/andr83/scalaconfig - 它支持直接从配置对象读取本机 scala 类型。在您的情况下,它将看起来:
val myList = modifyConfig.as[List[String]]("mylist")
开始Scala 2.13
,标准库通过以下方式提供 Java 到 Scala 的隐式列表转换scala.jdk.CollectionConverters
:
import scala.jdk.CollectionConverters._
val myList: List[String] = conf.getStringList("mylist").asScala.toList
这取代了不推荐使用的软件包scala.collection.JavaConverters/JavaConversions
。