我有一个带有Java签名且返回public Foo<?> getFoo()
的API
然后,当我尝试从Scala使用该API时,抱怨的是?
。
val fooValue:Foo[_] = API.getFoo()
我也尝试任何
val fooValue:Foo[Any] = API.getFoo()
任何想法如何在Scala中设置问号类型
最佳答案
以下代码编译
Foo.java
public class Foo<T> {
}
API.java
public class API {
public static Foo<?> getFoo() {
return null;
}
}
App.scala
object App {
val fooValue: Foo[_] = API.getFoo()
}
Foo[?]
是无效的Java语法。如果方法是
public static Foo<?> getFoo()
,则可以像API.getFoo()
一样调用它。如果是public Foo<?> getFoo()
,则可以像new API().getFoo()
一样调用它。Java中的问号(
?
)对应于Scala中的下划线(_
)。