Как стать автором
Обновить
108
29
Zheka Kozlov @orionll

Пользователь

Отправить сообщение
Никогда

Вообще-то в багтрекере OpenJDK и рассылке много обсуждали, сделать ли цикл for для Stream: bugs.openjdk.java.net/browse/JDK-8148917
Пример выше может бы и не сломал много кода, потому что так очень редко кто делает, но вот такой код точно сломается много у кого:

ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
    baos.write(bytes);
} catch (IOException ex) {
}


Если у write убрать IOException, то catch больше не будет компилироваться.
Потому что это сломало бы код у тех, кто пишет так:

class MyBAOS extends ByteArrayOutputStream {
    @Override
    public void write(byte[] b) throws IOException {
        // код, который может кинуть IOException
    }
}
Predicate.not и Optional.isEmpty появились одновременно в Java 11, поэтому в данном случае not не даёт погоды. Но в других случаях, да, он может быть полезен, например: not(Collection::isEmpty).
Спасибо, это важное замечание. Исправил.
Если переписать на Stream, то придётся ловить IOException. В этом то и проблема.
Если переписать на Stream, то придётся ловить IOException. В этом то и проблема.
Это очень актуально, особенно после новости, что прекращена поддержка Windows 7:)
Или это был троллинг?
И какую проблему это решит? А что после peek будет?
Подпишитесь на Телеграм-канал, тогда проверять не надо будет.
Если уж приводить пример, надо показывать действительно то, что не будет выглядеть на столько бессмысленным.

Ну ёлы-палы, добавьте пару операций к стриму, и он сразу же станет смысленным. Ну, так, например:

System.out.println(IntStream
    .iterate(1, i -> i < 100, i -> i * 2)
    .mapToObj(Integer::toString)
    .collect(Collectors.joining(", "))); // 1, 2, 4, 8, 16, 32, 64


А с циклом for то же самое будет уже сильно сложнее.
Да, согласен, это слабенько. Потому что ничего кроме этих 10 методов в новых версиях Java не появилось.
--sarcasm mode off--
Откройте вы уже список JEP'ов в начале статьи и посмотрите, что добавилось.
List.set() будет работать
В Котлине не все методы из списка есть

"Я это не использую, значит оно не нужно"

Любопытно будет посмотреть, как вы самостоятельно будете писать Process.pid или Cleaner :)
Неэффективно будет. takeWhile остановится сразу, а filter будет идти до самого конца.
Аналог Arrays.asList() для Set не нужен, всегда можно передать результат Arrays.asList в конструктор HashSet. Чаще всего такая инициализация востребована в статических константах, а значит лишняя аллокация не имеет значения.

Ну то есть вы предлагаете писать так?

Set<String> set = Collections.unmodifiableSet(new HashSet<>(Arrays.asList("a", "b", "c")));

Очень удобно, ничего не скажешь.

так что на killer-фичу, заставляющую обновляться даже близко не подходит

Где я утверждал, что это киллер-фича? Вы взяли из списка наименее востребованные функции, и сделали вывод, что мигрировать не нужно. А остальные функции проигнорировали. Что скажете по поводу ProcessHandle, takeWhile, Cleaner? Почему вы делаете суждения исходя из востребованности каждой отдельной функции, а не их в совокупности? А почему вы проигнорировали тот факт, что это лишь первая часть? Будут ещё статьи и будет ещё много API.

Информация

В рейтинге
201-й
Откуда
Новосибирск, Новосибирская обл., Россия
Зарегистрирован
Активность