Здравствуйте, ·, Вы писали:
·>По-моему фигня какая-то, первое — просто сахарок, который IDEA уже и так подсказывает в виде parameter hints. Второе — как в scala case-class, очень неудобно, когда модификация поля порождает новый объект — жуть.
·>Для dto в 40 полей такое всё равно не годится. Нужен билдер, чтобы по частям можно было собирать.
·>Хочется такого:
·>·>public Person modify(Person p) {
·> var builder = p.builder();
·> updateAAA(builder);
·> ...
·> if(...) updateBBB(builder);
·> else updateCCC(builder);
·> ...
·> updateDDD(builder);
·> return builder.build();
·>}
·>
А что там внутри этих updateBBB()?
Почему нельзя просто сделать тот же With? Ведь при присванивании "в себя же" ескейп-анализ уберёт всю лишнюю нагрузку на GC, в итоге имеем тот же перформанс, лаконичный синтаксис, и отсутствие необходимости для каждого DTO еще и цельный билдер расписывать.
·>В принципе хорошо иметь иммутабельность, но это требует парный мутабельый билдер и всё становится сложно с т.з. дизайна ЯП.
Пока не понимаю, зачем кому-то может пригодиться этот билдер.
·>Ты прав. Можно только новый тип создавать оказывается.
Переходите на сторону CLR. У нас всё это есть
Включая "annotation processors"