Tengo una biblioteca de Java que tengo que usar/llamar y lo estoy haciendo desde Scala. La biblioteca de Java tiene una firma como esta:
JavaFunction( List<Object[]> data) { this.data = data; }Supuse que para ser compatible con esto de Scala, necesitaba tener un AnyRef, así que tenía esto definido:
val fromScala: List[Array[AnyRef]] = List( Array[AnyRef](1, "Str1", 'a'), Array[AnyRef](2, "Str2", 'b'), Array[AnyRef](3, "Str3", 'c'), Array[AnyRef](4, "Str4", 'd') )Cuando traté de pasar esto al constructor, al compilar, me encontré con el siguiente error:
the result type of an implicit conversion must be more specific than AnyRef Array[AnyRef](1, "Str1", 'a')Entiendo que el compilador espera que sea explícito en mis tipos, pero no veo ninguna otra forma de hacer esto compatible. ¿Algunas ideas?
El problema es que esos son 1 en lugar de AnyRef , por lo que se AnyVal una conversión implícita debajo del capó.
Puede usar Int.box(1) para crear un java.lang.Integer
Sin embargo, ese boxeo ocurrirá en tiempo de ejecución, por lo que solo está agregando repetitivo, puede intentar ver si List[Array[Any]] compila y funciona como se esperaba.