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.getClass
no 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.)