我正在尝试调用 java 方法,该方法从 scala 中使用List<Class<?>>
。
编译失败,显示
type mismatch;
found : java.util.List[Class[T]] where type T <: Person.type
required: java.util.List[Class[_]]
我尝试使用JavaConverters,但收到相同的错误。
Java方法:
void registerClasses(List<Class<?>> var1);
从Scala拨打电话:
def registerEntities() = registry.registerClasses(List(Person.getClass).asJava)
答案 0 :(得分:3)
问题在于Person.getClass
的推断类型不是您想要的类型。您需要指定期望的类型,这可以通过显式类型参数完成
registry.registerClasses(List[Class[_]](Person.getClass).asJava)
(我不明白为什么类型描述在这里不起作用
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)
据我所知。)