Effective Java之总是要改写toString

Object的toString方法

虽然Object提供了toString方法的一个实现,但是,它返回的内容并不是类的用户所期待的,比如,我们定义类,

public class Point {
    private int x;
    private int y;

    public Point(int x, int y) {
        super();
        this.x = x;
        this.y = y;
    }

    public static void main(String[] args) {
        Point point = new Point(2, 3);
        System.out.println(point);
    }

}

运行,我们可以看到,结果是

Point@659e0bfd

这个结果并不是我们需要的,因为这并没有直观的代表了point的信息,这是因为,Object的toString方法,返回的是类名和实例散列值的无符号16进制表示。

如何改写

toString的约定指出,返回的字符串应该是一个“简洁的,但信息丰富,并且易于阅读的表达形式”。
虽然遵守toString约定并不像遵守equals和hasdCode那么重要,但是,提供一个好的toString,可以使一个类使用起来更加愉快。

实际应用中,toString应该返回对象中包含的所有令人感兴趣的内容。比如,Point类,我们感兴趣的是其x和y的值,那么我们可以这样改写toString方法,

    public String toString() {
        // TODO Auto-generated method stub
        return "Point x: " + this.x + ";y: " + this.y;
    }

然后在代码中,我们就可以得到我们期望得到的内容。

Point x: 2;y: 3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值