[英]How to call java method taking parameter as List<Class<?>> from Scala
我試圖調用一個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)
問題是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)
據我所知,應該這樣做。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.