黑马程序员技术交流社区

标题: toString()是怎么被自动调用的? [打印本页]

作者: 闫江龙    时间: 2011-12-31 00:58
标题: toString()是怎么被自动调用的?
本帖最后由 闫江龙 于 2011-12-31 19:25 编辑

public abstract class WeekDay1 {
        private WeekDay1(){}
       
        public final static WeekDay1 SUN = new WeekDay1(){
                public WeekDay1 nextDay() {       
                        return MON;
                }       
        };

        public final static WeekDay1 MON = new WeekDay1(){               
                public WeekDay1 nextDay() {               
                        return SUN;
                }       
        };       
       
        public abstract WeekDay1 nextDay();
       
        public String toString(){
                return this==SUN?"SUN":"MON";
        }

}
public class EnumTest {
        public static void main(String[] args) {
        WeekDay1 weekDay = WeekDay1.MON;
        System.out.println(weekDay.nextDay());//weekDay.nextDay()得到的是对象 但打印的时候却打印出的字符串,调用tostring()方法的原理是什么???都有什么情况会调用他?如果这样写呢weekDay.nextDay().tostring()   
       }
}

作者: 闫江龙    时间: 2011-12-31 09:41
没人理啊 唉
作者: 沈样    时间: 2011-12-31 09:57
返回该对象的字符串表示。通常,toString 方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。 这个api上写的,说明的打印对象的字符串形式,但是一般都会重写这个类,因为通常System.out.println()对象的输出格式不是我们想要的,就可以通过改写toString().只要是输出格式的问题
作者: 颜宗茂    时间: 2011-12-31 10:26
输出打印的时候就会调用自动调用该对象的tostring()方法,System.out.println()时就会调用,weekDay.nextDay().tostring()  是一样的效果,自己定义的类如果想看到自己想要的效果那么就要自己定义toString方法,否则就会调用Object类的toString方法。






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2