java为什么toString()不总是自动调用
那么为什么toString不总是被调用呢?这是一个使用Android API的示例
例如
@Override
public void onItemSelected(AdapterView<?> adapterView, View view,
int position, long id) {
Toast.makeText(this, adapterView, Toast.LENGTH_LONG).show();
}
不会编译。但是如果我把它改成
@Override
public void onItemSelected(AdapterView<?> adapterView, View view,
int position, long id) {
Toast.makeText(this, adapterView.toString(), Toast.LENGTH_LONG).show();
}
会的。实际的区别是什么
# 1 楼答案
还有这个
将编译;)
# 2 楼答案
编译器插入toString()的唯一情况是字符串串联
# 3 楼答案
我不知道Android API,但AdapterView实际上不是CharSequence的子类,因此必须应用toString()
# 4 楼答案
你说的总是是什么意思
toString()
只是一个返回对象的String
表示的方法。Toast.makeText
需要一个String
参数,但在第一种情况下,您提供了一个AdapterView
类的对象。所以它不会编译:)# 5 楼答案
我想是烤面包。makeTest的第二个参数的类型为String。然后尝试传递AdapterView类型的参数将不起作用。toString()永远不会自动调用,除非在连接字符串时(“+adapterView”也可以,但更难看)
# 6 楼答案
adapterView
不是String
编译器不会自动调用
toString()
来执行强制转换-这会稍微破坏类型安全性。例如,只有当存在+""
时,编译器才会自动调用toString()