java - 对象如何隐式调用 toString 方法?

标签 java

如果我正在打印类的一个对象,那么即使我没有编写 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/

相关文章:

java - 尝试使用 REST 从 Java 在 MS Project Server 2013 中创建项目

java - 从 firebase 实时数据库中删除用户时 Android 应用程序崩溃

java - 在制作一个n的随机整数倍数的数组时,程序任意修改一个数组

java - 在 IntelliJ IDEA 中使用模块

java - 在 Java 中,有时方法参数的行为类似于通过引用传递,尽管事实并非如此。他们通过什么方法?

java - 在 SecurityManager 中启用 SIGTERM

java - Jodd可以提供像apachetiles框架这样的功能吗?

java - 模块中的包可见性

java - Apache Camel bean 参数与 Spring DSL 的绑定(bind)问题

java - 我们是否需要在命名约定方面区分接口(interface)类和抽象类?