【发布时间】:2016-12-05 05:38:21
【问题描述】:
我在 java 中制作了包含各种类型数据的 hashmap,并希望将其传递给 scala。
在java中
HashMap<String, Object> myMap = new HashMap<String, Object>();
在斯卡拉中
def myApp(myMap: HashMap[String, Any]) // Object -> Any
hashmap 被很好地传递并像下面这样使用它。
val aValue = myMap.getOrDefault("A", "a").asInstanceOf[String]
val bValue = myMap.getOrDefault("B", new Hashmap[String, String]).asInstanceOf[ Hashmap[String, String]]
它和我预期的一样磨损了,但是当我尝试用 gradle 构建它来制作一个罐子时。它伴随着这个错误。
[ant:scalac] myApp.scala:44: error: value getOrDefault is not a member of java.util.HashMap[String, Any]
[ant:scalac] Note: implicit method myEncoder is not applicable here because it comes after the application point and it lacks an explicit result type
[ant:scalac] val aValue = myMap.getOrDefault("A", "a").asInstanceOf[String]
[ant:scalac] ^
【问题讨论】:
-
您使用的是什么版本的 Java?
getOrDefault来自 Java 8 -
我应该如何从eclipse更改我的java版本?
-
我更改了项目 > java 编译器 > jdk 合规性 > JDK 合规性为 1.8,但仍然出现相同的错误。
-
我做了,但得到了同样的错误..谢谢你