为自定义对象添加 toString() 方法
假设你已定义以下 Person
类:
public class Person {
String name;
int age;
public Person (int age, String name) {
this.age = age;
this.name = name;
}
}
如果你实例化一个新的 Person
对象:
Person person = new Person(25, "John");
稍后在代码中使用以下语句来打印对象:
System.out.println(person.toString());
你会得到类似于以下的输出:
Person@7ab89d
这是 Object
类中定义的 toString()
方法的实现结果,Object
类是 Person
的超类。Object.toString()
的文件说明:
类 Object 的 toString 方法返回一个字符串,该字符串由对象为实例的类的名称,符号字符“@”以及对象的哈希码的无符号十六进制表示组成。换句话说,此方法返回一个等于值的字符串:
`getClass()`.getName() + '@' + Integer.toHexString(`hashCode()`)
因此,对于有意义的输出,你必须覆盖 toString()
方法:
@Override
public String toString() {
return "My name is " + this.name + " and my age is " + this.age;
}
现在输出将是:
My name is John and my age is 25
你也可以写
System.out.println(person);
实际上,println()
隐含地在对象上调用 toString
方法。