es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La implementación de una interfaz de Java en Scala resulta en un mapa de tipos incompatible.

Tengo una interfaz de Java que quiero implementar en Scala. La interfaz contiene la siguiente declaración de método:

List<><string, object="">> xyz(Map<string, object=""> var1, Map<string, object=""> var2);

Mi implementación en Scala es:

override def testComponent(input: java.util.Map[String, Object], metadata: java.util.Map[String, Object])
  {

    val list: util.List[Map[String, AnyRef]] = new util.ArrayList[Map[String, AnyRef]]

     return list
  }

ERROR: el método de anulación xyz en la interfaz ITester de tipo (x$1: java.util.Map[String,Object], x$2: java.util.Map[String,Object]) java.util.List[java.util.Map[String,Object]] tiene un tipo incompatible. El método testComponent tiene un tipo incompatible.

No sé exactamente cuál es el problema.</string,></string,></string,>

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El problema es que la implementación del método testComponent en Scala no es compatible con la declaración del método en la interfaz Java ITester. La firma del método en la interfaz especifica que el método debe retornar una List<><string, object="">>, pero la implementación en Scala está retornando una util.List[Map[String, AnyRef]]. Los tipos genéricos utilizados en las declaraciones de List y Map no son los mismos en ambos casos.

    Para hacer la implementación compatible, se debe cambiar la declaración de la variable list a:

    val list: util.List[util.Map[String, Object]] = new util.ArrayList[util.Map[String, Object]]
    

    Esto asegura que la implementación retorne los tipos genéricos apropiados especificados en la declaración del método de la interfaz.</string,>

Comments are closed.