Initialize Map<String, Object> instance from Map entries
Replace
Map.of(a,b,c);
with
Map.ofEntries(a,b,c);
If you want to still use Map.of()
then you shall paste keys and values explicitly.
Map.Entry()
returns an immutableMap.Entry
containing the given key and value. These entries are suitable for populating Map instances using theMap.ofEntries()
method.
When to use Map.of()
and when to use Map.ofEntries()
From jdk-9 you can use Map.of()
to create Map
with key value pairs
Map<String, Object> map = Map.of("a", new Object(), "b", new Object(), "c", new Object());
And also by using SimpleEntry
Map<String, Object> map = Map.ofEntries(
new AbstractMap.SimpleEntry<>("a", new Object()),
new AbstractMap.SimpleEntry<>("b", new Object()),
new AbstractMap.SimpleEntry<>("c", new Object()));
Or by using Map.ofEntries
OP suggestion
The simple answer is:
var a = Map.entry("a", new Object());
var b = Map.entry("b", new Object());
var c = Map.entry("c", new Object());
var m = Map.ofEntries(a,b,c); // ! use Map.ofEntries not Map.of
And the type of Map.entry(key,val)
is Map.Entry<K,V>
, in case you were wondering.