tgoop.com/Java_Iibrary/1689
Create:
Last Update:
Last Update:
Автоматический toString() в Recordrecord сравнительно новая фича в Java, которая позволяет описывать сущности без явного объявления полей и написания геттеров/сеттеров.
Пример:
record User(String name, int age, String city) { }Если писать это же через класс, получится больше кода:
class User {
public String name;
public int age;
public String city;
public User(String name, int age, String city) {
this.name = name;
this.age = age;
this.city = city;
}
}И в том и в другом случае мы получаем объект для хранения данных:
new User("Nick", 20, "New York");Но есть отличие
У
record метод toString() генерируется автоматически и выводит имена и значения всех полей в удобном формате.В обычном классе дефолтный
toString() возвращает имя класса и хэш объекта.Пример:
record User(String name, int age, String city) { }
class SecondUser {
public String name;
public int age;
public String city;
public SecondUser(String name, int age, String city) {
this.name = name;
this.age = age;
this.city = city;
}
}
public static void main(String[] args) throws Exception {
User firstUser = new User("Nick", 20, "New York");
SecondUser secondUser = new SecondUser("Charley", 25, "New York");
System.out.println(firstUser);
System.out.println(secondUser);
}Вывод:
User[name=Nick, age=20, city=New York]
org.example.SecondUser@68de145
То есть у record
toString() сразу готов, а для обычного класса придётся переопределять вручную.