似乎无论我做什么,我都不会在Activity中实现toString()
方法。我总是得到java.lang.Object
的结果(比如Ljava.lang.Object;@4059d6a8
),而不是“我被叫了!”。我已经阅读了大量文章并浏览了大量代码,我无法弄清楚我做错了什么。有人可以向我解释如何覆盖该方法?这是我的代码:
public class OverrideTestActivity extends Activity {
private int number = 27;
private String[] items = { "MyFirstItem", "MySecondItem" };
public Object[] stuff = { number, items };
@Override
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
setContentView(R.layout.test);
OverrideTest();
}
public void OverrideTest() {
TextView result = (TextView) findViewById(R.id.textView1);
result.setText(stuff.toString());
}
@Override
public String toString() {
return "I was called!";
}
}
提前多多感谢!
答案 0 :(得分:6)
您正在覆盖类toString()
的{{1}}方法并为对象数组调用OverrideTestActivity
:这就是您获得toString()
类的默认实现的原因
答案 1 :(得分:3)
在这种情况下,只在toString()
类型的对象上调用OverrideTestActivity
。
相反,你在一个数组上调用toString(),而这个数组并没有这样的实现。
private int number = 27;
private String[] items = { "MyFirstItem", "MySecondItem" };
public Object[] stuff = { number, items };
如果您做了类似的事情
List<Object> stuff = Arrays.asList(27, "MyFirstItem", "MySecondItem");
stuff.toString();
您会发现它输出的格式代表List的内容。格式将由List实现上的toString()
方法确定。