38

我正在尝试在 Scala 中从配置文件中获取列表,例如something.confwith TypeSafe

something.conf我设置参数:

mylist=["AA","BB"]

在我的 Scala 代码中,我这样做:

val myList = modifyConfig.getStringList("mylist")

简单的配置参数工作正常,但有人可以给我一个如何提取列表的例子吗?

4

4 回答 4

40

正如@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至少链接到这些维护的库:

(免责声明:我不使用这些,因此您必须检查它们是否支持您的类型和格式)

于 2013-07-28T22:16:23.663 回答
28

作为记录,由于 Scala 2.12JavaConversions已被弃用,因此您可以:

import collection.JavaConverters._
val myList: List[String] = modifyConfig.getStringList("mylist").asScala.toList
于 2016-12-20T12:49:06.170 回答
2

您可以尝试我的 scala 包装器https://github.com/andr83/scalaconfig - 它支持直接从配置对象读取本机 scala 类型。在您的情况下,它将看起来:

val myList = modifyConfig.as[List[String]]("mylist")
于 2016-09-29T18:47:46.460 回答
0

开始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

于 2019-11-17T11:38:55.897 回答