2009-07-02 5 views
4

私は別のJava Collectionに基づいてJava Listを作成したいと思います。 Scalaで設定します。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

回答ありがとうございます! 私はセットのタイプは、(何もジェネリックを使用しない)未指定だった場合、これはあまりにも働くことに気づい: ヴァルアウト:リスト[文字列]のための新しいArrayListの[文字列](int.asInstanceOf [セット[文字列]]) – hammarback

+0

感謝を=質問 - 私はScalaについて多くのことを学びました。ところで、誰かがあなたに答えるなら、彼らの答えをアップアップしたり受け入れたりするのは丁寧なことです。 (私は答えなかったが、私がした人に感謝した) –

+0

tracで提出https://lampsvn.epfl.ch/trac/scala/ticket/2119 –

答えて

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) 

私は、Scalaの配列は以下のようになりようArrayListのがパラメータ化されていないなどの問題が、消去を入力する何とか関連していると仮定しますが、むしろ、それは実在のタイプです。これはおそらく型推論を不可能にしています。

関連する問題