重写toString()对象的字符串表示有什么原因和好处?

use*_*460 0 java class object tostring

当我们需要一个对象的String表示时,我们可以覆盖该toString()方法.但是,toString()当我们可以定义一个返回字符串的新方法时,覆盖的真正好处和原因是什么?

请看下面的例子:

class One
{
    private String name;
    public One(String _name)
    {
        name = _name;
    }

    @Override public String toString()
    {
        return name;
    }       
}

class Two
{
    private String name;
    public Two(String _name)
    {
        name = _name;
    }

    public String printMyClass() //Self-defined to print class details
    {
        return name;
    }       
}
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,printMyClass()自定义似乎与之相同toString().

所以我的问题是:为什么我们仍然使用toString()

Tim*_*m B 5

主要的好处是库期望这种行为并使用它.

例如,如果你记录,"funcX called with ("+param1+", "+param2+")"那么toString()将自动为你调用.

此外,这意味着您始终知道该toString()方法可用(因为它已定义,因此您可以在每个对象上调用它,而无需担心它是否存在.

对你来说更好的问题是为什么不使用它?它是为您提供的,为什么您不想使用它?