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

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

Отправить сообщение
Смысл ООП совершенно не в инкапсуляции и наследования, а в обмене сообщениями между обьектами.

Это неправильное определение ООП. ООП — это как раз инкапсуляция, наследование и полиморфизм.
Смысл ФП вовсе даже не в иммутабельности, а в чистых функциях без побочных эффектов. Мутабельность внутри них вполне себе имеет место быть.

Знаем, на Хаскелле писали. Но в Хаскелле действительно все переменные неизменяемые, так что Дядя Боб всё верно написал. И когда пишешь на Хаскелле, то пытаешься всеми силами не прибегать к мутабельности, т.к. такие действия приходится в монады заворачивать, что резко усложняет код.
В каком из бенчмарков? В первом вызывается new ArrayList<>(sourceList), и он и так выделяет массив точной длины. Во втором размер неизвестен в общем случае – фильтр может быть любым.

Не в суперклассе Object, а в утилитном классе Objects, который в отдельном пакете java.util находится.

Какой кошмар. Статью можно сразу удалять из-за такого позора.
PS. Графики рисует сторонняя тулза.

Забавный факт: с 2017 года вышло столько же версий Java, сколько и до 2017 года.
Ответ на опрос: использую range(from, to), когда мне нужно использовать i в лямбде внутри тела цикла. В остальных случаях пишу обычный for (int i = ...).
IntStream.range(0, this.size).map(i -> i * i * i).sum() работает так же быстро, как и простой for
Нет, LTS это 11, 17, 23, 29 и т.д.
Кстати, в Java 15 наконец-то можно будет нормально создавать временные классы и выгружать их с помощью метода Lookup.defineHiddenClass. Долгожданная фича.
ServiceLoader до Java 9 — это совсем не то же самое.
В вашей ссылке нет ничего про запрет использования префикса I.
Ключи -Xmodule и -Xpatch, видимо, были в ранних версиях Java 9, но потом поменялись на --patch-module. Правильные строки запуска такие:

javac --patch-module java.base=src -d out/java.base src/java/util/*.java

java --patch-module java.base=out/java.base <main class>
Как можно было не написать про запуск сайта inside.java?
По-любому не попадёт. Я даже не уверен, попадёт ли она туда с preview.
Пока паттерн-матчинг с оператором switch не работает. В этом релизе будут добавлены только sealed-классы. Паттерн-матчинг появится в будущих релизах.
А ещё стало известно, что Sealed Classes & Interfaces попадут в JDK 15 (почти наверняка). Я считаю, что эта новость тоже достойна дайджеста.
А ещё будет второе превью записей. Из важного там — это то, что введут локальные интерфейсы и перечисления.
Есть немалая категория кода, которая ожидает, что из Iterable можно получить сколько угодно итераторов.

Не вижу проблемы. Значит, такому коду не надо передавать Stream и всё.
В любом случае, наследование Stream от Iterable принесёт во много раз больше пользы, чем вреда.
Кстати, если вы почитаете javadoc к Iterable, то увидите, что там нигде не написано, что iterator() можно вызывать сколько угодно раз. Так что те, кто завязался на то, что обойти Iterable можно много раз – сами себе злобные Буратины.
По второй ссылке видно, что нависнет проблема с библиотекой AssertJ

Какой второй ссылке? Какая проблема?
Какая разница, прямое наследование или нет? Да, хотят сделать IterableOnce, но это общей картины не меняет: Stream<T> <: IterableOnce<T> <: Iterable<T>. И почему прямое наследование не сработает? Аргументы предоставьте.

Информация

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