Warning: mkdir(): No space left on device in /var/www/tgoop/post.php on line 37

Warning: file_put_contents(aCache/aDaily/post/java_fillthegaps/--): Failed to open stream: No such file or directory in /var/www/tgoop/post.php on line 50
Java: fill the gaps@java_fillthegaps P.168
JAVA_FILLTHEGAPS Telegram 168
Records: обзор

Записи (records) появились как превью фича в java 14. В этом посте разберём, что такое записи, чем отличаются от классов и как их использовать.

Записи определяют неизменяемый набор значений:
record Point(int x, int y) {}

Создаются так же, как и другие классы:
Point p = new Point(1,2);

В чём особенность?
🔸 Поля нельзя поменять: ни внутри методов, ни через рефлекшн
🔸 Нет приватных полей
🔸 Не участвуют в наследовании
🔸 Конструктор по умолчанию не пустой, а с заданными полями
🔸 Добавлены геттеры по умолчанию:
p.x()
p.y()
🔸 toString по умолчанию
Point[x=1, y=2]
🔸 equals и hashcode по умолчанию
🔸 Для сериализации не нужен serialVersionUID

Запись - специальный класс для хранения данных. record Point компилируется в
public final class Point extends java/lang/Record

Все остальные функции класса сохраняются:
Определять методы
Реализовать интерфейсы
Добавлять static поля и методы
Ставить аннотации
Использовать дженерики

Ещё одна особенность records — конструктор. Конструктор по умолчанию содержит все поля и называется канонический конструктор:
public Point(int x, int y){
this.x=x;
this.y=y;
}

Он доступен по умолчанию, его можно не писать. Переопределяйте конструктор, если нужно добавить проверку аргументов:
public Point(int x, int y){
if (x>100) throw new …
this.x=x;
this.y=y;
}

Для канонического конструктора есть краткая запись. Можно опустить присвоение переменных и оставить только нужные проверки:
public Point {
if (x>100) throw new ...
}

Другие конструкторы должны вызывать канонический:
public Point(int x) {
this(x,0);
}

Где использовать записи:

1️⃣ В многопоточных алгоритмах
Неизменяемые значения не нужно синхронизировать.

2️⃣ Data Transfer Object (DTO)
Для отправки данных пользователю или в другую систему.

record UserDTO(long id, String name) {
public UserDTO(User user) {…}
}

3️⃣ Как промежуточные значения в Stream API
Для упрощения сложного кода и большей читаемости.

4️⃣ Как составное возвращаемое значение
Когда не хочется создавать отдельный класс ради одного метода:
record MinMax<T>(T min, T max) {} 

❗️Правильный ответ на вопрос перед постом:
В записях поля неизменны, также записи не участвуют в наследовании и не содержат приватных полей.
👍3



tgoop.com/java_fillthegaps/168
Create:
Last Update:

Records: обзор

Записи (records) появились как превью фича в java 14. В этом посте разберём, что такое записи, чем отличаются от классов и как их использовать.

Записи определяют неизменяемый набор значений:

record Point(int x, int y) {}

Создаются так же, как и другие классы:
Point p = new Point(1,2);

В чём особенность?
🔸 Поля нельзя поменять: ни внутри методов, ни через рефлекшн
🔸 Нет приватных полей
🔸 Не участвуют в наследовании
🔸 Конструктор по умолчанию не пустой, а с заданными полями
🔸 Добавлены геттеры по умолчанию:
p.x()
p.y()
🔸 toString по умолчанию
Point[x=1, y=2]
🔸 equals и hashcode по умолчанию
🔸 Для сериализации не нужен serialVersionUID

Запись - специальный класс для хранения данных. record Point компилируется в
public final class Point extends java/lang/Record

Все остальные функции класса сохраняются:
Определять методы
Реализовать интерфейсы
Добавлять static поля и методы
Ставить аннотации
Использовать дженерики

Ещё одна особенность records — конструктор. Конструктор по умолчанию содержит все поля и называется канонический конструктор:
public Point(int x, int y){
this.x=x;
this.y=y;
}

Он доступен по умолчанию, его можно не писать. Переопределяйте конструктор, если нужно добавить проверку аргументов:
public Point(int x, int y){
if (x>100) throw new …
this.x=x;
this.y=y;
}

Для канонического конструктора есть краткая запись. Можно опустить присвоение переменных и оставить только нужные проверки:
public Point {
if (x>100) throw new ...
}

Другие конструкторы должны вызывать канонический:
public Point(int x) {
this(x,0);
}

Где использовать записи:

1️⃣ В многопоточных алгоритмах
Неизменяемые значения не нужно синхронизировать.

2️⃣ Data Transfer Object (DTO)
Для отправки данных пользователю или в другую систему.

record UserDTO(long id, String name) {
public UserDTO(User user) {…}
}

3️⃣ Как промежуточные значения в Stream API
Для упрощения сложного кода и большей читаемости.

4️⃣ Как составное возвращаемое значение
Когда не хочется создавать отдельный класс ради одного метода:
record MinMax<T>(T min, T max) {} 

❗️Правильный ответ на вопрос перед постом:
В записях поля неизменны, также записи не участвуют в наследовании и не содержат приватных полей.

BY Java: fill the gaps


Share with your friend now:
tgoop.com/java_fillthegaps/168

View MORE
Open in Telegram


Telegram News

Date: |

Public channels are public to the internet, regardless of whether or not they are subscribed. A public channel is displayed in search results and has a short address (link). Choose quality over quantity. Remember that one high-quality post is better than five short publications of questionable value. Just at this time, Bitcoin and the broader crypto market have dropped to new 2022 lows. The Bitcoin price has tanked 10 percent dropping to $20,000. On the other hand, the altcoin space is witnessing even more brutal correction. Bitcoin has dropped nearly 60 percent year-to-date and more than 70 percent since its all-time high in November 2021. Over 33,000 people sent out over 1,000 doxxing messages in the group. Although the administrators tried to delete all of the messages, the posting speed was far too much for them to keep up. Step-by-step tutorial on desktop:
from us


Telegram Java: fill the gaps
FROM American