В чем разница между окончательным классом и записью?
Проще говоря, в чем разница между конечным классом и записью в Java 17?
В каком случае я должен использовать запись?
1 ответ
Record является неизменяемым классом , т.е. все его поля являются . Записи являются неявными, следовательно, как и обычный конечный класс , не могут быть расширены .
На записи накладывается ряд ограничений (подробнее см . JEP 395).
В отличие от обычных классов :
- запрещено явно объявлять поля экземпляра внутри записей ( и напоминание: все поля являются , что является очень важным различием );
-
предложение не допускается с записями , потому что каждая запись неявно расширяет абстрактный класс Record; - запись не может быть объявлена ни с одним из этих модификаторов:
, , или же (как следствие неявного ); - записи не могут объявлять инициализаторы экземпляров и собственные методы .
Записи должны быть «прозрачными носителями неизменяемых данных» , как говорится в JEP 395.
Они разработаны, чтобы быть краткими , конструктор по умолчанию , геттеры ,
Рекорды сильно отличаются от обычных выпускных занятий .
Также, кроме упомянутых выше особенностей, для записей был перереализован механизм сериализации/десериализации , чтобы десериализация не обходила стороной конструктор.
В каком случае я должен использовать запись?
Короче говоря, если ваши объекты должны иметь состояние или вам нужно расширить определенный класс, то вы не можете использовать в таком случае.
С другой стороны, если ваши объекты предназначены только для передачи данных , они не предназначены для изменения или наследования от других классов, тогда это может быть хорошим кандидатом для реализации в качестве