#java #vector #tostring
#java #вектор #tostring
Вопрос:
Вывод, который я бы придумал:
Длина: XX Ширина: XX Название: XX Цена: XX
Результат, который я действительно получил:
Название: XX Цена: XX
Почему программа пропустила toString ClassA?
Главная:
case 'c':
if(!theList.isEmpty()){
for (int i = 0; i < theList.size(); i )
System.out.println(theList.elementAt(i).toString());
} else {
System.out.println("The list is empty!");
}
break;
toString() ClassA:
@Override
public String toString(){
StringBuilder result = new StringBuilder();
result.append("Length: ").append(this.getLength()).append('n');
result.append("Width: ").append(this.getWidth()).append('n');
return result.toString();
}
ClassB, который расширяет ClassA, toString():
@Override
public String toString(){
super.toString();
StringBuilder result = new StringBuilder();
result.append("Title: ").append(this.getTitle()).append('n');
result.append("Price: ").append(this.getPrice()).append('n');
return result.toString();
}
Комментарии:
1. Я предлагаю вам использовать a
List
вместо aVector
Ответ №1:
Это очень просто. Вы только вызвали toString
метод A, но вообще не использовали возвращаемое значение.
Кроме того, я бы написал toString
метод следующим образом:
@Override
public String toString() {
return //
"Length: " getLength() 'n' //
"Width: " getWidth() 'n';
}
Код короче, легче читается и компилируется в байт-код, эквивалентный вашему текущему коду. То же самое для B toString
:
@Override
public String toString() {
return super.toString() //
"Title: " getTitle() 'n' //
"Price: " getPrice() 'n';
}