public String toString() {
String text = "";
text += "Имя: " + this.name;
text += ", пол: " + (this.sex ? "мужской" : "женский");
text += ", возраст: " + this.age;
int childCount = this.children.size();
if (childCount > 0) {
text += ", дети: " + this.children.get(0).name;
for (int i = 1; i < childCount; i++) {
Human child = this.children.get(i);
text += ", " + child.name;
}
}
return text;
}
Anton
22 уровень
Объясните подробно пожалуйста как работает toString
Решен
Комментарии (10)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Ksenia Volkova Java Developer в DXC Master
7 декабря 2019, 20:39
Когда ты выводишь объект на экран - например, через System.out.println - выводится его текстовое представление, за которое и отвечает метод toString().
Этот метод есть у всех типов (потому что он есть у класса Object, а все остальные классы, в том числе те, которые пишешь ты, неявно унаследованы от него). По умолчанию этот метод возвращает строку, состоящую из названия класса и хэша объекта. Но если мы хотим получить на выводе что-то более информативное, то надо метод toString переопределить.
Именно это здесь и происходит. Вместо того, чтобы увидеть на экране что-нибудь вроде Human@232204a1, мы получим описание объекта с информацией о имени, возрасте, поле и детях.
0
Anton
7 декабря 2019, 20:45
String text = "";
text += "Имя: " + this.name;
Это мне вроде понятно. Можно подробнее сам синтаксис? то, что это равноценно text = text + "....." мне тоже понятно. Объясните сам синтаксис, пожалуйста.
0
Ksenia Volkova Java Developer в DXC Master
7 декабря 2019, 21:00
Что именно в синтаксисе непонятно?
0
Anton
7 декабря 2019, 21:13
text = text + "....." зачем?
0
Ksenia Volkova Java Developer в DXC Master
7 декабря 2019, 21:19
Добавляем к строке новые части.
Сначала строка пустая - "". Потом добавляем туда имя, потом пол, возраст и т.д.
0
Anton
7 декабря 2019, 21:36
спасибо, это понятно.
Потом
int childCount = this.children.size();
if (childCount > 0) {
text += ", дети: " + this.children.get(0).name;
for (int i = 1; i < childCount; i++) {
Human child = this.children.get(i);
text += ", " + child.name;
}
ну и последнее)
0
Ksenia Volkova Java Developer в DXC Master
7 декабря 2019, 21:41
Если у объекта есть дети, то добавляем в строку имена детей.
0
Anton
7 декабря 2019, 21:49
Human child = this.children.get(i);
this.children тут имеется в виду ArrayList, потому что раньше в кнструкторе мы присваивали this.children = list., а в параметрах конструктора Human (ArrayList<Human> list) ???
0
Ksenia Volkova Java Developer в DXC Master
7 декабря 2019, 21:52решение
У класса Human есть поле children, которое является списком объектов типа Human.
Human child = this.children.get(i); - берём детей из этого списка по одному и добавляем их имена в text.
+2
Anton
7 декабря 2019, 22:04
Значит я верно понял, спасибо!
0