2016-12-05 61 views
0

我做了散列圖,其中包含varous類型的數據在java中,並希望將其傳遞給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]       ^
+1

什麼版本的Java您使用的是? 'getOrDefault'來自Java 8 – 4castle

+0

我該如何從eclipse更改java版本? –

+0

我更改了項目> java編譯器> jdk compliance> JDK compliance爲1.8,但仍然出現相同的錯誤。 –

回答

0

你可以嘗試這樣的事情如下:

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

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

{ 

val scalaHashMap=myMap.asScala 

}