Scala中Java的Map.of

Scala中Java的Map.of,java,scala,Java,Scala,如何从Scala调用java映射的静态varg重载 例如: val-map:java.util.map[Char,Int]= java.util.Map.of'Z',5',R',2',X',9',A',4',F',1 由于Scala将其视为映射的成员,因此此操作失败并出错 的值不是对象java.util.Map的成员 java.util.Map.of'Z',5',R',2',X',9',A',4',F',1 ^编译失败 请注意,这是在JavaSE9中引入的,因此您的代码将无法使用Java9JDK

如何从Scala调用java映射的静态varg重载

例如:

val-map:java.util.map[Char,Int]= java.util.Map.of'Z',5',R',2',X',9',A',4',F',1 由于Scala将其视为映射的成员,因此此操作失败并出错

的值不是对象java.util.Map的成员 java.util.Map.of'Z',5',R',2',X',9',A',4',F',1 ^编译失败 请注意,这是在JavaSE9中引入的,因此您的代码将无法使用Java9JDK之前的版本进行编译

您应该记住的另一个重要事实是,使用Map.of,最多只能存储10个条目,并且对于每个条目数0到10,定义了一个单独的Map.of。所以,它不是一个varg

e、 下面的陈述是正确的

Map<Character, Integer> map = Map.of('A', 1, 'B', 2, 'C', 3, 'D', 4, 'E', 5, 'F', 6, 'G', 7, 'H', 8, 'I', 9,
                'J',  10);
输出:


您正在使用哪个JDK?Map.of似乎只有JDK 9+@IvanKurchenko嘿,我的坏消息是1.8。我的默认值是如何在我的环境中更改的。让我检查一下最新的java和updare allIs是否使用了需求的Map.of?如果您不知道,有一些从scala到Java的转换器带有“import scala.collection.JavaConverters.”和val-map:util.map[Char,Int]=map'Z'->5,'R'->2,'X'->9,'A'->4,'F'->1.asjava这在JVM版本更新中运行良好。
Map<Character, Integer> map = Map.of('A', 1, 'B', 2, 'C', 3, 'D', 4, 'E', 5, 'F', 6, 'G', 7, 'H', 8, 'I', 9,
                'J', 10,'K',11);
import static java.util.Map.entry;

import java.util.Map;

public class Main {
    public static void main(String[] args) {
        Map<Character, Integer> map = Map.ofEntries(entry('A', 1), entry('B', 2), entry('C', 3), entry('D', 4),
                entry('E', 5), entry('F', 6), entry('G', 7), entry('H', 8), entry('I', 9), entry('J', 10),
                entry('K', 11));

        System.out.println(map);
    }
}
{K=11, J=10, I=9, H=8, G=7, F=6, E=5, D=4, C=3, B=2, A=1}