Информация об изменениях

Сообщение Re[9]: Догонит ли net java? от 05.12.2022 17:05

Изменено 05.12.2022 17:05 vsb

Re[9]: Догонит ли net java?
Здравствуйте, ·, Вы писали:

·>По-моему record создавали с другой целью — для pattern matching. Если что-то и сделают, то это будет какой-то другой элемент языка.


Там будет что-то вроде

var person1 = Person with {
    lastName = l;
    firstName = f;
    age = 18;
};

var person p2 = 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 делает — так нельзя делать.
Re[9]: Догонит ли net java?
Здравствуйте, ·, Вы писали:

·>По-моему 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 делает — так нельзя делать.