簡體   English   中英

如何將參數作為List調用java方法 <Class<?> &gt;來自斯卡拉

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM