2017-03-17 5 views
-5

Scalaでは、何かを保持できるJava Listをどのように宣言しますか?Scala - 何かを保持できるJava Listを宣言する

一覧[オブジェクト]私がしようとすると、それにタプルを置く場合Scalaのエラーが

type mismatch; found :  java.util.List[Triple[Integer,Integer, Integer]] required: 
java.util.List[Object] Note: Triple[Integer,Integer, Integer] <: Object, but Java-defined 
trait List is invariant in type E. You may wish to investigate a wildcard type 
such as `_ <: Object`. (SLS 3.2.10) 

を言う私は、これは何を意味するのか分からない、怒る、どのように私は(トリプルを保持するためのリストを宣言します

@import java.util.List; 

@(field:List[Object], min:Int=1)(f: Object, Int) => Html) 
@{ 
    (0 until math.max(if (field.isEmpty) 0 else field.size, min)) 
     .map(i => f(field.get(i),i)) 
} 
+2

コンパイラは、「_ <:Object>のようなワイルドカードタイプ を調べたいと思うかもしれません。それを試しましたか? – danielnixon

+3

私はあなたが実際のエラーを引き起こしているコードを表示しているとは思わない。 –

答えて

0

(スカラを使用しますかタプル、または

は私のコードは、この(それは@を持っているので、それは、クルクル回すですが、それだけでScalaのコードである)のように見えますJava以外の)コレクション、例えば。 scala.collection.Seq[Any]。それは可変にする必要がある場合は、scala.collection.mutable

scala> val t = Tuple3[Int,Int,Int](1,2,3) 
t: (Int, Int, Int) = (1,2,3) 

scala> val listAny: Seq[Any] = Seq[Any](t,t,5,"happy now?") 
listAny: Seq[Any] = List((1,2,3), (1,2,3), 5, happy now?) 

を見て、あなたがJavaコレクションを使用して主張する場合、エラーメッセージによって示唆されているように、あなたは、field:List[_ <: Object]を試すことができます。 は、実行時にScalaコードがJVMと互換性のあるコンパイル済みバイトコードで表されるため、JavaアプリケーションにScalaコレクションを渡すことにも注意してください。

+0

um、私はそれを行う必要はありません私はJavaでプレイフレームワークを使用しているので、Javaのリストを送信する - あなたは本当に質問に答えていない! – bharal

+2

申し訳ありません - 「Scalaでは、何かを保持するリストを宣言するにはどうすればいいですか」と混乱します。 Scalaで何かを保持するリストが必要だと思った – radumanolescu

関連する問題