Vector不会在命令行中显示有关对象的所有信息

时间:2011-10-07 17:59:33

标签: java vector tostring

我的输出会出现:

  

长度:XX宽度:XX标题:XX价格:XX

我实际获得的输出:

  

标题:XX价格:XX

为什么程序省略了ClassA的toString?

主要

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;

ClassA的toString():

   @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 个答案:

答案 0 :(得分:0)

这很简单。您只调用了A的toString方法,但根本没有使用返回值。

除此之外,我会按如下方式编写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';
}
相关问题