我看到DTO对象中的大部分时间, toString方法被重新覆盖。
例如:
public class Person implements Serializable {
private String firstName;
private String lastName;
private int age;
/**
* Creates a new instance of Person
*/
public Person() {
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
//Overriding toString to be able to print out the object in a readable way
//when it is later read from the file.
public String toString() {
StringBuffer buffer = new StringBuffer();
buffer.append(firstName);
buffer.append("\n");
buffer.append(lastName);
buffer.append("\n");
buffer.append(age);
buffer.append("\n");
return buffer.toString();
}
}
有人可以告诉我这样做的用途是什么?
答案 0 :(得分:9)
答案在您的代码评论中。调试时,您希望能够打印对象的人类可读表示。如果您不覆盖toString
,则很可能会有以下代码:
Person@129cfbb
答案 1 :(得分:8)
它使调试器更易于使用。在Eclipse中(我相信几乎每个IDE),调试器默认在对象上显示toString()
的输出。
编辑:正如其他人所指出的那样,还有很多其他用途:记录,显示在GUI元素中,或者将对象转换为文本以进行显示所需的任何其他用途。
答案 2 :(得分:3)
这是为了在打印对象时或者在打印对象时有一些正确的输出(由toString()
实现返回)而不是java.lang.Object
的标准实现(类似于your.package.Person@...
)将它附加到另一个字符串。
答案 3 :(得分:2)
有很多用途。其中:在GUI中的组合框中显示此对象,以调试某些单元测试断言......
答案 4 :(得分:0)
覆盖toString,以便在以后从文件中读取对象时,能够以可读的方式打印出对象。
抱歉,无法抗拒。严肃地说,toStrings对于任何Java类都被重写是很有价值的。但是,我特意打赌一个DTO特别适合使用toString,因为该对象是为了传输数据。通常,这意味着将数据打印成可读格式。