2017-10-10 63 views
0

我是新來的斯卡拉,我試圖用JavaConverters替換過時的JavaConversions庫。原代碼如下所示:斯卡拉收集 - 類型鑄造任何到Seq [T]使用轉換器

addresses = { 
     import scala.collection.JavaConversions._ 
     config.getConfigList("amqp.addresses").map(address ⇒ 
     Address(
      host = address.foo() 
     ))(collection.breakOut) 
} 

當我在代碼JavaConvertors更換JavaConversions上面,我得到一個編譯錯誤:

Type mismatch: expected Seq[Address], actual: Any 

我理解的異常意味着什麼,但我不當然,我可以如何轉換上面的代碼是返回一個Seq[Address]而不是一個Any。此外,轉換器中有一個asJava方法將scala列表轉換爲java列表,但不知道如何在此處使用它。思考?

回答

2

您需要時的最終類型,明確了Java集合轉換成一個斯卡拉(asScala):

addresses: Seq[Address] = { 
     import scala.collection.JavaConverters._ 
     config.getConfigList("amqp.addresses").asScala.map(address ⇒ 
     Address(
      host = address.foo() 
     ))(collection.breakOut) 
} 
+0

的感謝!這樣可行。我有一個關於Converters庫的相關問題,但是我打開了一個新的線程讓它保持清潔:https://stackoverflow.com/questions/46673632/scala-collections-util-mapstring-anyref-mapstring-string –