看到一篇文章,里面有一句说是:"无论如何,每一个类都应该定义 toString 方法".我有些不太明白,请大家指点一二.

解决方案 »

  1.   

    不是应该定义,而是本身就有一个,因为所有类的顶极父类object有toString()方法,所以所有的类都有这个方法,因为所有的类都是直接或间接地从object类派生
      

  2.   

    Object中有toString()方法,而所有类继承Object
    比如 print一个String类对象就调用了toString()方法 所以能输出字符串,
    但别的类就不一定了,可能会打印出带"@"的类地址,所以要自己写一个达到自己的目的
      

  3.   

    应该不是强迫只是复写toString方法是一种好的习惯,可以方便调式
      

  4.   

    这个要看写的class有什么用了,我觉得没必要每个class都要toString(),
    override了此方法在打印的时候清楚明了而已~。
      

  5.   

    定义自己的toString(),可以用他来打印对象各个成员的内容,比较有用
      

  6.   

    public class Test {
        public Test() {
        }
        public String toString(){
            return "Class Test";
        }
        public static void main(String [] args){
            Test t = new Test();
            System.out.print(t);
        }
    }
    从这个例子中可以看出,print()方法调用地是object的toString()方法,因为任何一个对象都是继承Object这个对象,而这个对象定义了toString()这个方法。
      

  7.   

    标准的项目开发中,并不是所有的Class都要重写toString()方法的。
    基本要求是对自定义的数据类提供重写的toString()方法,如果父类已经提供了意义明确的toString()方法,子类就可以不在重写了。
      

  8.   

    不需要,Object中有toString()方法,而所有类继承Object,自己定义的话,无非是进行覆盖了!~
      

  9.   

    我接触的实际开发中,大部分类都不重写toString()的。因为那些处理逻辑功能的类,根本没机会被调用toString()方法的,如果这样的类与用户交互或写日志信息肯定有自己的方法。对于那些经常要打印自身信息的类,定义一个合适的toString()方法,会使打印出来的信息更加友好和清楚;当然你不定义的话,就会调用Object类的toString()方法,你试验一下看看打印出来的信息很不友好。这是我的理解。
      

  10.   

    kingofworl(良辰美景虚度) 正解,如果有条件的话,可以重写toString()方法。
      

  11.   

    这个说法见于joshua Bloch的effective java第9条 : 总是要改写toString因为java.lang.Object提供了toString方法的一个实现,但是它返回的字符串通常并不是类的用户所期望看到的。它包含类的名字,以及一个"@"符号,接着是hashcode的无符号十六进制表示。比如“PhoneNumber@163b91”。重写toString的必要性在于:
    1.提供一个好的toString实现,可以使一个类用起来更加愉快。
    2.在实际应用中,toString方法应该返回对象所包含的所有令人感兴趣的内容。
    3.不管你是否决定指定格式,都应该在文档中明确的表明你的意图。
    4.无论是否指定格式,为toString返回值中包含的所有信息,提供一种编程访问途径,这总使一种好的做法。
      

  12.   

    说toString用于调试,未免太局限,太过分了。
    toString本身就具有很好的用途。
    比如,我们知道 table的cell中接受任何类型对象。那么table中显示对象的什么呢?它就显示toString()返回的字符串。
    看问题,要看其本质
      

  13.   

    在开发过程中.如果有必要就自己重写toString()方法
      

  14.   

    自己在自定义类中重写了toString(),它在调试的时候用处很大,我是这样认为的
      

  15.   

    无论如何??
    可以不用,但如果要打印对象名啊之类的就复写toString()方法。
      

  16.   

    这是在effective里的话, 主要是让对象在打印时打印出有意义的值 而不是用从object那继承的打印 @类名+hashcode这样让人费解的字符串。