覆盖使用重写的toString()的toString()

时间:2011-12-12 22:29:52

标签: java override

基本上这就是我想要实现的目标。

classname @ address(?)[original toString()],对象的名称,对象的年龄

@Override public String toString()
{
return String.format("%s , %s , %d", this.toString(), this.getName(),this.getAge());
}

问题,递归调用toString()

我无法致电super.toString(),因为那不是我想要的。我希望“this”拨打原始toString()

这个

this.super.toString() 

由于显而易见的原因不起作用。

我正在耗尽蒸汽,一旦方法被覆盖,这可以完成吗?即打电话给原来的实施?

(我的编辑)基本上我需要的是:覆盖toString以显示'this'对象的两个属性,我也希望'this'调用原始的toString。

这不是项目或工作。只是用Java语言玩(学习)。谢谢

2 个答案:

答案 0 :(得分:10)

您正在寻找super.toString()

答案 1 :(得分:0)

实际上,我试图达到同样的目的,super.toString()并不是我想要的。我相信这是不可能的。

具体来说,我在Groovy / Grails中有一个域类,我想覆盖它的toString()方法来添加一些额外的信息:

class Child extends Parent {

    public String toString() {
        return super.toString(this) + extra_info // not possible!!!
    }
}

这与return super.toString() + extra_info不同。在一个案例中,我得到了例如。

com.example.domain.Parent : 15, extra_info。 (错误。实例相同,但toString包含类型信息。)

另一方面:

com.example.domain.Child : 15, extra_info。 (正确,但不可能。)