在java中以同一行打印

时间:2010-05-31 05:59:32

标签: java inheritance printing

我有一个名为Items和3个派生类的基类,在Items基类中我有一个表单的打印函数

public void print(){
        System.out.println("ID " + id + " Title " + title + " <" + year + "> ");
    }

在每个派生类中,我通过super.print();调用Items打印函数,然后是与派生类相关的特定打印函数。

我的问题是,无论何时从其中一个派生类执行打印,打印文本都不在同一行。因此super.print()将位于派生类打印函数上方的行中。如何让它们在同一条线上?

4 个答案:

答案 0 :(得分:4)

打印后,你无法安全地收回换行符(根据终端输出退格符号,但你真的不想这样做)。我认为构建它的逻辑方法可能是一个超类函数:

public void print() {
    System.out.println(toString());
}

然后根据需要覆盖toString

超类

public String toString() {
    return "ID " + id + " Title " + title + " <" + year + "> ";
}

子类

public String toString() {
    return super.toString() + " ... more stuff";
}

答案 1 :(得分:2)

不要在基类println上使用print代替

答案 2 :(得分:2)

println替换为System.out.print

答案 3 :(得分:2)

在这里,覆盖toString()似乎更合适。然后,您可以根据需要控制打印,它可以转到System.out,文件,记录器和其他所有内容。

@Override public String toString() {
   return String.format("ID %s Title %s <%d> ", id, title, year);
}

然后在子课程中:

@Override public String toString() {
   return super.toString() + " whatever";
}

API链接

相关问题