我有一个带有Java签名的API,该API返回public Foo<?> getFoo()
然后,当我尝试从Scala使用该API时,抱怨的是?
。
val fooValue:Foo[_] = API.getFoo()
我也尝试使用Any
val fooValue:Foo[Any] = API.getFoo()
任何想法如何在Scala中设置问号类型
答案 0 :(得分:3)
下面的代码编译
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中的下划线(_
)。