簡體   English   中英

scala:如何迭代類型安全配置列表

[英]scala: how to iterate typesafe config list

我正在嘗試遍歷配置列表,它給了我一些錯誤。 不知道我做錯了什么。

配置

test{
  header = [
    {
      name="col0"
      vale="aaa"
    }
    {
    name="col1"
    value="bbb"
    }
  ]
}

代碼

val headers:ConfigList  = ConfigFactory.load().getList("test.header")

    headers.forEach{header:Config =>
      val name = header.getString("name")
      println(name)
    }

錯誤

Error:(32, 35) type mismatch;
 found   : com.typesafe.config.Config => Unit
 required: java.util.function.Consumer[_ >: com.typesafe.config.ConfigValue]
    headers.forEach{header:Config =>

正如@Luis 所說,Scala 2.11.x 中的函數不會編譯為 Java 函數。 並且由於它們不是 Java 函數,因此無法通過 SAM 將它們轉換為Consumer

因此,您需要明確提供Cosumer

此外,使用getList("...")你會得到一個ConfigList ,它可以用來迭代ConfigValue元素而不是Config

headers.forEach(new Consumer<ConfigValue> {
  override def accept(configValue: ConfigValue): Unit = {
    // Since you have ConfigValue... do whatever you want with it
    println(configValue.render())
  }
})

你真正想要使用的是getConfigList(...)

val headers = ConfigFactory.load().getConfigList("test.header")

headers.forEach(new Consumer<Config> {
  override def accept(config: Config): Unit = {
    println(config.getString("name"))
  }
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM