Scala中的Java泛型问号

时间:2018-10-10 14:25:29

标签: java scala

我有一个带有Java签名的API,该API返回public Foo<?> getFoo()

然后,当我尝试从Scala使用该API时,抱怨的是?

val fooValue:Foo[_] = API.getFoo()

我也尝试使用Any

val fooValue:Foo[Any] = API.getFoo()

任何想法如何在Scala中设置问号类型

1 个答案:

答案 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中的下划线(_)。