2009-07-02 15 views
4

我想創建一個基於另一個java集合的java List,例如。設置在斯卡拉。從Scala中的java.util.Set構造一個java.util.List

爲什麼這是不可能的?我得到一個必需的:scala.this.Int錯誤。

val in: java.util.Set[String] = new java.util.HashSet() 
val out : java.util.List[String] = new java.util.ArrayList(in) 

然而這工作,但感覺不對:

val in: java.util.Set[String] = new java.util.HashSet() 
val out: List[String] = new java.util.ArrayList() 

out.addAll(in.asInstanceOf[java.util.Set[String]]) 

謝謝!

+0

感謝您的答案! 我注意到,如果Set的類型是未指定的(沒有使用泛型),這也可以工作: val out:List [String] = new ArrayList [String](int.asInstanceOf [Set [String]]) – hammarback 2009-07-02 13:46:46

回答

2

您需要顯式傳遞ArrayList類型變量。

這工作得很好:

val in = new java.util.HashSet[String] 
val out = new java.util.ArrayList[String](in) 
2

這工作:

val in: java.util.Set[String] = new java.util.HashSet() 
val out : java.util.List[String] = new java.util.ArrayList[String](in) 

我認爲問題以某種方式與類型擦除,因爲ArrayList的不參數化的斯卡拉陣列會是這樣,但是,相反,它是一種存在型。這可能使得類型推斷成爲不可能。

相關問題