首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 物件轉字串:toString() 方法重寫完整指南

     編輯:Java 相關知識

直接列印物件參考(如 System.out.println(obj))時,預設會呼叫 Object.toString(),輸出格式為 類別名稱@雜湊碼(例如 test.A@15093f1),這對除錯幾乎無用。正確做法是覆寫 toString(),回傳具備業務意義的字串表達。

預設行為示範

class A {
    int a, b;
    // getter/setter 略
}

public class Test {
    public static void main(String[] args) {
        A obj = new A();
        obj.setA(8);
        obj.setB(9);
        System.out.println("a.a: " + obj.a); // 8
        System.out.println("a.b: " + obj.b); // 9
        System.out.println(obj);              // test.A@15093f1 ← 無意義
    }
}

重寫 toString() 後的效果

class A {
    int a, b;
    // getter/setter 略

    @Override
    public String toString() {
        return "A.a:" + a + ";A.b:" + b;
    }
}

// 執行結果:
// a.a: 8
// a.b: 9
// A.a:8;A.b:9  ← 清楚可讀

最佳實務建議

  • 包含關鍵欄位:僅列出能識別物件狀態的核心屬性,避免過長。
  • 格式統一:建議採用 ClassName{field1=value1, field2=value2} 風格,或使用 Objects.toStringHelper(this)(Guava) / ToStringBuilder(Apache Commons Lang)自動產生。
  • 處理 null 與循環參考:工具類通常內建保護,手寫時需自行防禦。
  • IDE 自動產生:IntelliJ IDEA / Eclipse 皆提供 Generate → toString() 功能,可依專案編碼風格模板快速完成。

進階:搭配 Lombok

若專案引入 Lombok,僅需在類別上加 @ToString 註解即可自動產生標準實作,並支援 exclude、includeFieldNames 等細節控制:

@ToString(exclude = "password")
public class User {
    private Long id;
    private String username;
    private String password;
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved