Java 7 non supporta i valori letterali di raccolta. Essi sono previsti per Java 8. Non ce l'ha fatta anche in Java 8 come discusso in questa domanda: Are Project Coin's collection enhancements going to be in JDK8?
È possibile utilizzare la biblioteca di Google Guava se avete bisogno solo collezioni immutabili. ImmutableList
, ImmutableSet
e ImmutableMap
hanno diversi metodi di fabbrica di overload o anche costruttori che rendono la creazione di collezioni facile:
List<Integer> list = ImmutableList.of(1, 1, 2, 3, 5, 8, 13, 21);
Set<String> set = ImmutableSet.of("foo", "bar", "baz", "batman");
Map<Integer, String> map = ImmutableMap.of(1, "one", 2, "two", 3, "three");
EDIT
Java 9 sarà probabilmente aggiungere collection factory methods simili a quelle di Guava:
List.of(a, b, c);
Set.of(d, e, f, g);
Map.of(k1, v1, k2, v2)
Map.ofEntries(
entry(k1, v1),
entry(k2, v2),
entry(k3, v3),
// ...
entry(kn, vn)
);
I due punti in modo strano! :) –
In Java 8, è possibile utilizzare questo trucco per ottenere letterali di carte ragionevoli con espressioni lambda: https://gist.github.com/galdosd/10823529 –
Questo trucco dipende dal compilatore in uso. Penso che funzioni con Eclipse ma non con javac. –