toString方法用于让对象以清晰有意义的字符串形式呈现,避免默认的“类名@哈希值”;必须重写以支持打印、字符串拼接和日志记录;应简洁可读、含关键字段、过滤敏感信息、避免副作用与NPE。
toString 方法的作用是让对象能以字符串形式被清晰、有意义地表示出来,避免打印出无用的内存地址。 默认情况下,Object 类的 toString 返回的是“类名@哈希值”,比如 Person@1b6d3586,这对调试和日志毫无帮助。重写 toString 就是为了告诉 Java:“这个对象,应该长这样”。
Java 在打印对象(如 System.out.println(obj))、拼接字符串("info: " + obj)、记录日志时,会自动调用 toString。若不重写,你看到的永远是一串无法理解的标识符,排查问题困难,协作效率低。
User@2a139a55,而不是 User{id=101, name='张三', age=28}
核心原则是:简洁、可读、包含关键业务字段,不暴露敏感信息或大体积数据(如 byte[]、JSON 字符串体)。
ClassName{field1=value1, field2=value2},字段顺序建议与构造参数或数据库字段一致Objects.toString(name, "null") 或三元判断,避免 NPEorders.size=5),而非展开全部内容toString 不是格式化工具,也不该有副作用。
password='***'
如果项目允许使用 Lombok,加个 @ToString 注解就能自动生成。支持排除字段(exclude = {"password", "rawData"})、调用 getter(callSuper = true)、自定义顺序等。
例如:
@ToString(exclude = "password")
public class User {
private Long id;
private
String name;
private String password;
}
生成结果类似:User(id=101, name="张三") —— 安全又干净。