我在试着读一本书 .yaml
文件到我的scala代码中。假设我有 yaml
文件:
animals: ["dog", "cat"]
我正在尝试使用以下代码读取它:
val e = yaml.load(os.read("config.yaml")).asInstanceOf[java.util.Map[String, Any]]
val arr = e.getOrDefault("animals", new Java.util.ArrayList[String]()) // arr is Option[Any], but I know it contains java.util.ArrayList<String>
arr.asInstanceOf[Buffer[String]] // ArrayList cannot be cast to Buffer
arraylist是any类型,那么如何将其转换为scala集合(例如buffer)(或seq,list…)
2条答案
按热度按时间mi7gmzs61#
snakeyaml(假设您使用的是什么)不能直接提供类似于scala集合的缓冲区。
但您可以要求它提供字符串的arraylist,然后将其转换为所需的任何内容。
结果:
uqxowvwt2#
另一个选项是定义配置的模型,例如:
下面将创建
Sample
:然后,使用
CollectionConverters
在scala 2.13中,或JavaConverters
在scala 2.12或更早版本中,转换animals
进入scala结构:代码在scastie运行。