I use Guava and in particular their immutable collections (ImmutableList
, ImmutableSet
).
But Guava is compiled for Java 6. If I use Java 8, can I use .stream()
with them?
Yes you can.
The .stream()
method, which is defined in the Collection
interface, has a default implementation. And so do, for that matter, .parallelStream()
and .spliterator()
. And both List
s and Set
s "are" Collection
s.
And it doesn't end there since you can also use Map
's .forEach()
on Guava's ImmutableMap
s as well. Map
does have other default operations, but they mutate the map, and Guava's immutable collections/maps are... Well...
Note that more generally, each time an interface's method has a default implementation, it will be mentioned in the javadoc, since the method's return type will be preceded with the default
keyword.
Some sample, very crude code which works and makes use of that (along with the concept of Single Abstract Method used in lambdas, see here for more details):
ImmutableSet.of(23, 2389, 19).stream().forEach(System.out::println);
(System.out
is a PrintStream
, and its .println()
method signature is the same as that of a Consumer
)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With