[英]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.