2017-07-11 10 views
1

Javaコードを使用して不変のScalaマップを作成する必要があります。私はこれについて他のものを見つけましたが、現在のバージョンに更新されたものは何もありません。JavaコードをJavaコードを介して不変のScalaマップに変換する方法は?

私が試してみた:

public static <A, B> Map<A, B> toScalaMap(HashMap<A, B> m) { 
     return JavaConverters.mapAsScalaMapConverter(m).asScala().toMap(
       Predef.<Tuple2<A, B>>conforms() 
     ); 
} 
+0

あなたが達成しようとしているかの大きな絵が何を?なぜあなたはJavaコードでScalaのマップをしたいですか? – Tyler

+0

私はコレクションを返しカフカのAdminClientクラスで働いています.scala.immutable.Mapと私はユニットテストでそれを返すモックを持つことができるように1つを作成できるようにしたい。 – spillthebeans

+0

それを試したときに何が起こったのですか? – Dima

答えて

1

変更が$ conformsに準拠し、Intellijとコマンドラインの両方で検索が実行されるようになりましたが、IntellijはJavaConverters.mapAsScalaMapConverter(m).asScala()。toMapの下に赤い線を表示します(scala.Predef 。$少ない$大腸$コロン。

private <A,B> scala.collection.immutable.Map<A, B> toScalaMap(Map<A, B> m) { 
     return JavaConverters.mapAsScalaMapConverter(m).asScala().toMap(
       Predef.$conforms() 
     ); 
    } 
1

あなたのコードが正しいです。この問題は、コードの作成方法や実行方法に問題がある可能性があります。また、必要なインポートがすべて含まれていない可能性もあります。 EclipseとScalaの2.12のためのScala IDEのバージョン4.6.1と、次の作品:

package org.soreadytohelp; 

import java.util.HashMap; 

import scala.Predef; 
import scala.Tuple2; 
import scala.collection.JavaConverters; 
import scala.collection.immutable.Map; 

public class MapTest { 
    public static <A, B> Map<A, B> toScalaMap(HashMap<A, B> m) { 
     return JavaConverters.mapAsScalaMapConverter(m).asScala().toMap(
      Predef.<Tuple2<A, B>>conforms() 
     ); 
    } 

    public static void main(String[] args) { 
     HashMap<String, String> hm = new HashMap<String, String>(); 
     hm.put("food", "bacon"); 

     Map<String, String> hmAsScala = toScalaMap(hm); 
     System.out.println(hmAsScala); 
    } 
} 
0

私はIntelliJのと、この問題に遭遇したが、それはただのIntelliJコンパイラエラーであることが判明し、経由で実行することができましたまあまあ。コンパイルエラーが発生したかどうかを確認するために、コードを実行/ビルドしてみてください。

関連する問題