我必须覆盖toString()方法,我已经这样做了如下
public String toString() {
String str = "The zoo is capable of keeping " + park.length + "animals\nThe following is the list of animals currently in the zoo.";
for(int i = 0; i < park.length; i++)
str += '\n' + "cage " + i + " status: " + park[i];
return str;
}
并创建了另一种打印此方法的方法
public void print() {
System.out.println(park.toString());
}
不知何故,当我在main方法中使用print方法时,会出现以下内容
[LAnimal;@3a67ad79
现在,有人向我建议我可能实际使用默认的toString()方法,从而带来实际的地址内存。
你们认为这个问题是什么?
答案 0 :(得分:2)
您无法覆盖toString
数组,而是使用Arrays#toString
。
答案 1 :(得分:2)
从使用park.length
和应用程序输出看来,park
是Animal
类型的数组。 因此
System.out.println(park.toString());
应该是
System.out.println(Arrays.toString(park));
(因为Arrays
不会覆盖Object#toString
方法)
答案 2 :(得分:0)
您必须添加@Override
@Override public String toString() {
String str = "The zoo is capable of keeping " + park.length + "animals\nThe following is the list of animals currently in the zoo.";
for(int i = 0; i < park.length; i++)
str += '\n' + "cage " + i + " status: " + park[i];
return str;
}
答案 3 :(得分:0)
您正在park[i]
方法
toString()
str += '\n' + "cage " + i + " status: " + park[i];
^
|_________ Here you are printing the Object