Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala中的Java泛型问号_Java_Scala - Fatal编程技术网

Scala中的Java泛型问号

Scala中的Java泛型问号,java,scala,Java,Scala,我有一个带有Java签名的API,返回public Foo getFoo() 然后,当我试图使用Scala的API时,我正在抱怨? val fooValue:Foo[_] = API.getFoo() 我也会尝试使用任何 val fooValue:Foo[Any] = API.getFoo() 您知道如何在Scala中设置问号类型吗?下面的代码编译如下 Foo.java Foo[?]不是有效的Java语法 如果该方法是publicstaticfoo getFoo(),则可以像API.getF

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

然后,当我试图使用Scala的API时,我正在抱怨

val fooValue:Foo[_] = API.getFoo()
我也会尝试使用任何

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

您知道如何在Scala中设置问号类型吗?下面的代码编译如下

Foo.java

Foo[?]
不是有效的Java语法

如果该方法是
publicstaticfoo getFoo()
,则可以像
API.getFoo()
那样调用它。如果它是
public Foo getFoo()
,您可以像
new API().getFoo()
一样调用它


Java中的问号(
)对应于Scala中的下划线(
)。

编译器可以推断类型吗?编译器不能推断通配符类型吗?“IDE没有抱怨,但当我编译错误时,确切的错误消息是什么?并显示导致它的完整代码示例。您使用泛型T创建Foo类。在我的情况下,我不能让它成为泛型类型T编写类的定义
Foo
。“不能使其成为泛型类型T”是什么意思?抱歉,是的,我们在类的定义中有Foo[T],但仍然不适用于我。请编写类的定义并编写编译错误。我修复了生成getFoo()的实例。asInstanceOf[Foo[Any]]
public class Foo<T> {
}
public class API {
    public static Foo<?> getFoo() {
        return null;
    }
}
object App {
  val fooValue: Foo[_] = API.getFoo()
}