tostring() 被隐式调用...如何?

2023-12-24

在下面的代码中,如何toString()是隐式调用的?

class Payload {
    private int weight;
    public Payload (int w) {
        weight = w; 
    }
    public void setWeight(int w) {
        weight = w; 
    }
    public String toString() {
        return Integer.toString(weight); 
    }
}

public class testpayload {
    static void changePayload(Payload p) {
        p.setWeight(420);
    } 
    public static void main(String[] args) {
        Payload p = new Payload(200);
        p.setWeight(1024);
        changePayload(p);
        System.out.println("p is " + p);
    }
}

这行:

System.out.println("p is " + p);

使用字符串连接,在中指定第15.18.1节 http://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.18.1JLS,从以下开始:

如果只有一个操作数表达式的类型为 String,则对另一操作数执行字符串转换(第 5.1.11 节)以在运行时生成字符串。

第5.1.11节 http://docs.oracle.com/javase/specs/jls/se8/html/jls-5.html#jls-5.1.11 has:

任何类型都可以转换为类型String通过字符串转换。

...

现在只需要考虑参考值:

  • 如果参考是null,它被转换为字符串"null"(四个 ASCII 字符 n、u、l、l)。

  • 否则,转换的执行就像调用toString不带参数的引用对象的方法;但如果调用的结果toString方法是null,然后是字符串"null"被用来代替。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

tostring() 被隐式调用...如何? 的相关文章

随机推荐