2016-12-05 5 views
0

Я сделал hashmap, который содержит varous тип данных в java и хотел бы передать его scala.Scala - build with hashmap

В 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]] 

Это было так, как я ожидал, НО, когда я попытался построить его с помощью градиента, чтобы сделать банку. Он пришел с этой ошибкой.

[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

Как мне изменить версию java из eclipse? –

+0

Я изменил проект> java Compiler> соответствие jdk> соответствие JDK как 1,8, но получило ту же ошибку. –

ответ

0

Вы можете попробовать что-то вроде этого ниже:

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

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

{ 

val scalaHashMap=myMap.asScala 

}