2013-07-28 19 views
24

我想在斯卡拉从像something.conf配置文件获取列表与类型安全http://typesafehub.github.io/config/latest/api/index.html如何获取列表与类型安全配置库

在something.conf我设置参数:

mylist=["AA","BB"] 

,并在我的Scala代码我做的:

val myList = modifyConfig.getStringList("mylist") 

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

干杯!

+1

你能澄清这个问题吗?看看API,你的代码看起来很好。你应该在'myList'中找到一个'List [String]'。 –

+2

我的猜测是你期待'getStringList'的结果是一个Scala'List'。情况并非如此 - “typesafe-config”是一个纯Java库,“getStringList”返回一个“java.util.List”的实现。 – ghik

回答

26

由于@ghik笔记,类型安全配置库是的Java基础,所以你得到一个java.util.List[String],而不是一个scala.List[String]。因此,无论你做一个转换为scala.List:你找一个Scala库

import collection.JavaConversions._ 
val myList = modifyConfig.getStringList("mylist").toList 

或(可能不太别扭)。该tools wiki链接至少这些维护库:

(免责声明:我不使用这些,所以你必须检查他们支持你的类型和格式)

+2

我是新来的Scala :-),你是对的我把java.util.List和scala.List混合在一起。 'import collection.JavaConversions._ val myList = modifyConfig.getStringList(“mylist”)。toList'窍门。谢谢,我会检查这些链接... – Martin

2

你可以试试我的斯卡拉包装https://github.com/andr83/scalaconfig - 它支持直接从配置对象中读取本地阶类型。你的情况,它的外观:

val myList = modifyConfig.as[List[String]]("mylist") 
14

为了记录在案,因为斯卡拉2.12 JavaConversions已被弃用,因此您可以:

import collection.JavaConverters._ 
val myList: List[String] = modifyConfig.getStringList("mylist").asScala.toList 
+2

这应该被标记为正确的答案。 –

+0

这应该被标记为“更多”正确的答案。 – bigdatamann

相关问题