Como ya se dijo Kim, que necesita para hacer la matriz de covarianza en su tipo de elemento, porque Arras de Scala no son covariantes como el de Java/C# 's.
Este código será hacer que funcione por ejemplo:
class Table[+T](rowData: Array[Array[T]],columnNames: Seq[_])
Este dice al compilador que debe T
covariante (esto es similar a la de ? extends T
Java o C# 's out T
).
Si necesita más control sobre lo que se permite tipos y cuáles no, también se puede utilizar:
class Table[T <: Any](rowData: Array[Array[T]],columnNames: Seq[_])
Esto le dirá al compilador que T
puede ser cualquier subtipo de Any
(que se puede cambiar de Any
a la clase que necesita, como CharSequence
en su ejemplo).
Ambos casos funcionan de la misma en este escenario:
scala> val people = Array(Array("John", "25"), Array("Mary", "22"))
people: Array[Array[java.lang.String]] = Array(Array(John, 25), Array(Mary, 22))
scala> val headers = Seq("Name", "Age")
headers: Seq[java.lang.String] = List(Name, Age)
scala> val myTable = new Table(people, headers)
myTable: Table[java.lang.String] = [email protected]
Editar: Si la clase en cuestión no está bajo su control, declarar el tipo que desee de forma explícita como esto:
val people: Array[Array[Any]] = Array(Array("John", "25"), Array("Mary", "22"))
Actualización
Este es el código fuente en cuestión:
// TODO: use IndexedSeq[_ <: IndexedSeq[Any]], see ticket [#2005][1]
def this(rowData: Array[Array[Any]], columnNames: Seq[_]) = {
Me pregunto si alguien se olvidó de retirar la solución, porque # 2005 se fija desde mayo de 2011 ...
Creo que esto supone que Table es mi clase. La tabla que necesito es scala.swing.Table. Además, asInstanceOf no parece ayudar. –
Gracias, la mecanografía explícita hace el trabajo. (Pensé que lo había intentado antes, pero creo que estaba usando un código de objeto antiguo.) Veo que tengo las filas y las columnas invertidas, está bien, eso es fácil, y mis encabezados no se muestran.Sin embargo, no es crítico para lo que estoy haciendo. –