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

發佈了31 篇原創文章 · 獲贊 15 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章