【问题标题】:Scala - build with hashmapScala - 使用 hashmap 构建
【发布时间】: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,但仍然出现相同的错误。
  • 我做了,但得到了同样的错误..谢谢你

标签: java scala


【解决方案1】:

你能试试下面这样的方法吗:

import collection.JavaConverters._
import collection.mutable._

def myApp(myMap: java.util.HashMap[String, Any])=

{

val scalaHashMap=myMap.asScala

}

【讨论】:

    猜你喜欢
    • 2017-11-11
    • 2021-06-17
    • 1970-01-01
    • 2016-10-28
    • 2011-11-12
    • 2011-03-24
    • 1970-01-01
    • 2014-04-12
    • 1970-01-01
    相关资源
    最近更新 更多