【发布时间】:2020-03-19 20:12:05
【问题描述】:
我有一个签名看起来像这样的 Java 方法:
public Map<String, ?> getData() {
return data;
}
我正在尝试将此返回值作为 Scala 方法的参数:
import java.util.{Map => jMap}
def myMethod(m: jMap[String, Any]): Unit = {
// do stuff
}
// myMethod(foo.getData())
这样,编译器会报错:
found : java.util.Map[String,?0] where type ?0
required: java.util.Map[String,Any]
什么是?,它的 Scala 等价物是什么?
当我尝试时:
def myMethod(m: jMap[String, ?]): Unit = {
// do stuff
}
错误:
not found: type ?
信息:
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
Apache Maven 3.5.2 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T07:58:13Z)
Maven home: /usr/share/maven
Java version: 1.8.0_152, vendor: Oracle Corporation
Java home: /usr/java/jdk1.8.0_152/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "4.19.76-linuxkit", arch: "amd64", family: "unix"
【问题讨论】:
-
我不完全确定,但我相信
jMap[String, _]应该可以工作。如果不是,那么更详细的存在形式应该jMap[String, A] forSome { type A }