soo*_*per 5 java generics scala
我试图调用从scala中获取的java方法。List<Class<?>>
编译失败并显示
type mismatch;
found : java.util.List[Class[T]] where type T <: Person.type
required: java.util.List[Class[_]]
Run Code Online (Sandbox Code Playgroud)
我尝试使用JavaConverters,但收到相同的错误。
Java方法:
void registerClasses(List<Class<?>> var1);
Run Code Online (Sandbox Code Playgroud)
从Scala致电:
def registerEntities() = registry.registerClasses(List(Person.getClass).asJava)
Run Code Online (Sandbox Code Playgroud)
问题是推断的类型Person.getClass
不是您想要的类型。您需要指定期望的类型,这可以通过显式类型参数来完成
registry.registerClasses(List[Class[_]](Person.getClass).asJava)
Run Code Online (Sandbox Code Playgroud)
(我不明白为什么类型归属在这里不起作用:
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)
Run Code Online (Sandbox Code Playgroud)
据我所知应该如此。)