Cómo llamar a Java método tomando como parámetro Lista <Clase <? >> de Scala

sooper:

Estoy tratando de llamar a un java método que lleva List<Class<?>>desde Scala .

La compilación falla con

type mismatch;
 found   : java.util.List[Class[T]] where type T <: Person.type
 required: java.util.List[Class[_]]

Intenté usar JavaConverters pero conseguir el mismo error.

método Java:

void registerClasses(List<Class<?>> var1);

Llamar desde Scala:

def registerEntities() = registry.registerClasses(List(Person.getClass).asJava)

Alexey Romanov:

El problema es que el tipo inferido por Person.getClassno es el que usted desea. Es necesario especificar el tipo esperado, y esto se puede hacer por un parámetro de tipo explícita

registry.registerClasses(List[Class[_]](Person.getClass).asJava)

(No entiendo por qué tipo de adscripción no funciona aquí:

registerClasses(List(Person.getClass: Class[_]).asJava)

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

Por lo que yo puedo decir que debería.)

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=180744&siteId=1
Recomendado
Clasificación