Здравствуйте, ·, Вы писали:
·>По-моему record создавали с другой целью — для pattern matching. Если что-то и сделают, то это будет какой-то другой элемент языка.
Там будет что-то вроде
var person1 = Person with {
lastName = l;
firstName = f;
age = 18;
};
var person2 = person1 with {
age = 16;
};
В целом это сделает их юзабельными. Конечно без мутабельности будет неудобно и придётся менять фреймворки, но тут разработчики уже упёрлись рогом.
·>Не скажу за весь lombok, но по-моему геттеры-сеттеры можно генерить используя вполне себе стандартный annotation processor.
Я сам не пробовал annotation processor-ы писать, поэтому могу ошибаться. Но в моём понимании annotation processor может генерировать либо полностью новый класс, который старый код видеть не будет. Либо какие-то там проверки делать и тд. То бишь максимум, который можно сделать оставаясь в рамках того, что разрешено — руками объявить
interface Person { String name(); String name(String name); }, а annotation processor сгенерирует
class PersonImpl implements Person { ... } и ты его экземпляр уже как-то получишь.
А как lombok делает — так нельзя делать.