簡體   English   中英

Map.of 為 Java 在 Scala

[英]Map.of for Java in Scala

如何從 Z3012DCFF1477E1FEAAB81764 調用 java Map的 static varg 過載?

例如:

 val map: java.util.Map[Char,Int] =
  java.util.Map.of('Z', 5, 'R', 2, 'X', 9, 'A', 4, 'F', 1)

這失敗並出現錯誤,因為 Scala 將其視為 Map 的成員。

    Value of is not a member of object java.util.Map
          java.util.Map.of('Z', 5, 'R', 2, 'X', 9, 'A', 4, 'F', 1)
                        ^Compilation Failed 

請注意, Map.of是隨Java SE 9引入的,因此您的代碼將無法使用 Java9 之前的 JDK 進行編譯。

您應該記住的另一個重要事實是,使用Map.of最多只能存儲 10 個條目,並且對於每個條目數(0 到 10),定義了一個單獨的Map.of 所以,它不是一個 varg。

例如以下陳述是正確的

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);

不是以下一個:

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);

如果您想使用這樣的單個語句存儲超過 10 個條目,則可以使用Map#ofEntries

演示:

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);
    }
}

Output:

{K=11, J=10, I=9, H=8, G=7, F=6, E=5, D=4, C=3, B=2, A=1}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM