LINUX.ORG.RU

История изменений

Исправление vbr, (текущая версия) :

Если немного попробовать попредсказывать будущее, то в целом можно предполагать, что с введением Value-классов Optional станет именно таким и компилятор научится его оптимизировать так, будто это просто nullable объект.

В этом случае проблем с производительностью при хранении Optional в поле объекта больше возникать не будет.

Т.е. как предлагает maxcom - вариант с record у которого одно из полей Optional точно станет приемлемым, тем более, что там и деструктурирование красивое будет, ну отказываться от этого точно глупо.

Полагаю, что в этом случае описанный в первом сообщении код изменится на подход с хранением Optional-а в поле объекта. Геттер не изменится, а если вернуться к билдеру, ну тут логичней всего будет передавать Optional в сеттер.

Также планируется фича withers. Прямо сейчас record-ы я почти не использую, на мой взгляд они бесполезны для большинства случаев кроме тривиальных типа Point(int x, int y). У них нескрываемый публичный конструктор, это мне не совсем нравится. Использовать конструктор напрямую сложно - без именованных параметров код легко ломается - достаточно перепутать два String-а местами и никто не заметит. Ну и вообще эти record-ы для ADT делали, а не чтобы в них бизнес-данные маппить. С withers будет некая имитация именованных параметров, что, возможно, резко повысит юзабельность record-ов,

Исходная версия vbr, :

Если немного попробовать попредсказывать будущее, то в целом можно предполагать, что с введением Value-классов Optional станет именно таким и компилятор научится его оптимизировать так, будто это просто nullable объект.

В этом случае проблем с производительностью при хранении Optional в поле объекта больше возникать не будет.

Т.е. как предлагает maxcom - вариант с record у которого одно из полей Optional точно станет приемлемым, тем более, что там и деструктурирование красивое будет, ну отказываться от этого точно глупо.

Полагаю, что в этом случае описанный в первом сообщении код изменится на подход с хранением Optional-а в поле объекта. Геттер не изменится, а если вернуться к билдеру, ну тут логичней всего будет передавать Optional в сеттер.

Также планируется фича withers. Прямо сейчас record-ы я почти не использую, на мой взгляд они бесполезны для большинства случаев кроме тривиальных типа Point(int x, int y). У них нескрываемый публичный конструктор, т.е. это прямой минус. Использовать конструктор напрямую сложно - без именованных параметров код легко ломается - достаточно перепутать два String-а местами и никто не заметит. С withers будет некая имитация именованных параметров, что, возможно, резко повысит юзабельность record-ов,