Scala—声明一个可以容纳任何内容的Java列表
在Scala中,如何声明可以容纳任何内容的Java列表 Scala表示,如果我尝试在列表中放入元组,列表[对象]就会变得不安Scala—声明一个可以容纳任何内容的Java列表,java,scala,twirl,Java,Scala,Twirl,在Scala中,如何声明可以容纳任何内容的Java列表 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
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)
使用Scala而不是Java集合,例如Scala.collection.Seq[Any]。如果需要可变,请查看scala.collection.mutable
如果坚持使用Java集合,可以尝试field:List[;嗯,我不想这样做,因为我正在使用Java的play framework,所以发送一个Java列表-你也没有真正回答这个问题!抱歉-在Scala中,我被如何声明一个包含任何内容的列表弄糊涂了。我想你需要一个包含任何内容的列表,在Scala中,编译器说你可能希望研究一个通配符类型,例如我认为您没有显示产生实际错误的代码。
@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))
}
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?)