如果我正在打印类的一个对象,那么即使我没有编写 toString()
方法,它也会打印 toString()
方法实现,那么什么是实现,它是如何在内部调用 toString()
的?
最佳答案
您没有显式调用 toString()
,但隐式调用:
参见:
System.out.println(foo); // foo is a non primitive variable
System
是一个类,有一个static
字段out
, 类型 PrintStream
.所以你调用 println(Object)
PrintStream
的方法。
它是这样实现的:
public void println(Object x) {
String s = String.valueOf(x);
synchronized (this) {
print(s);
newLine();
}
}
如我们所见,它正在调用 String.valueOf(Object)
方法。
这是实现如下:
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
在这里你可以看到,toString()
被称为。
关于java - 对象如何隐式调用 toString 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17051481/