在下面的代码中,如何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
通过字符串转换。
...
现在只需要考虑参考值:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)