Ответ 1
Да, вы можете.
Метод .stream()
, который определен в интерфейсе Collection
, имеет реализацию по умолчанию. И в этом случае .parallelStream()
и .spliterator()
. И оба List
и Set
"равны" Collection
s.
И это не заканчивается, так как вы также можете использовать Map
.forEach()
в Guava ImmutableMap
. Map
имеет другие операции по умолчанию, но они мутируют карту, а постоянные коллекции/карты Guava... Ну...
Обратите внимание, что в общем случае каждый раз, когда метод интерфейса имеет реализацию по умолчанию, он будет указан в javadoc, так как для типа возвращаемого метода будет предшествовать ключевое слово default
.
Некоторые примеры, очень грубый код, который работает и использует это (наряду с концепцией Единого абстрактного метода, используемого в lambdas, см. здесь для получения более подробной информации):
ImmutableSet.of(23, 2389, 19).stream().forEach(System.out::println);
(System.out
является PrintStream
, а его .println()
method подпись такая же, как и Consumer
)