toString方法来自于基类Object如下:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
而我们为什么在自己创建的类中需要经常性的重写toString方法呢?
应用<<Java编程思想>>中的一句话就是为了让对象正确的显示,其实我目前的想法就是让开发更加方便,举例说明如下:
在前后端分离的情况下,当前端向服务器端发起请求时,服务器端会将前端传来的多个键值对数据封装成一个对象,而在代码调试过程中,我们需要具体查看前端传递的具体数值是多少,这是就需要重写封装对象的toString方法,使数值的显示更加直观。不知道这样讲解,理解清楚没有?
下面附一段重写toString方法的例子
public class Mouse {
private int mouseNimber;
public Mouse(int mouseNimber) {
this.mouseNimber = mouseNimber;
}
@Override
public String toString() {
return "Mouse{" +
"mouseNimber=" + mouseNimber +
'}';
}
void print(String msg){
if(msg!=null){
System.out.println(msg);
System.out.println("Mouse number"+mouseNimber);
}
}
}
public class MouseTrap {
static void caugheYa(Object m){
Mouse mouse = (Mouse)m;
mouse.print("Caught one!");
}
}
测试:
public class WorksAnyway {
public static void main(String[] args) {
Vector mice = new Vector();
for (int i = 0;i<3;i++){
mice.addElement(new Mouse(i));
for (int j = 0;j<mice.size();j++){
System.out.println("Free mouse:"+mice.elementAt(j));
MouseTrap.caugheYa(mice.elementAt(j));
}
}
}
}
结果:
Free mouse:Mouse{mouseNimber=0}
Caught one!
Mouse number0
Free mouse:Mouse{mouseNimber=0}
Caught one!
Mouse number0
Free mouse:Mouse{mouseNimber=1}
Caught one!
Mouse number1
Free mouse:Mouse{mouseNimber=0}
Caught one!
Mouse number0
Free mouse:Mouse{mouseNimber=1}
Caught one!
Mouse number1
Free mouse:Mouse{mouseNimber=2}
Caught one!
Mouse number2