2 回答
TA贡献1874条经验 获得超12个赞
我不明白的是,当我运行程序时,family.getFamilyMembers();gets 会在 get 之前执行family.toString()。对此有什么解释吗?
它之前没有被执行toString()。它之前被执行System.out.println(),打印结果toString()
由于您在内部打印getFamilyMembers(),并且getFamilyMembers在打印语句之前进行评估,因此您会看到getFamilyMembers()之前的结果toString
如果您更改getFamilyMembers()方法以返回Person对象的名称而不是打印它们,那么您将看到预期的结果:
public String getFamilyMembers() {
StringBuilder sb = new StringBuilder();
for (Person person : this.family) {
sb.append(person.toString();
}
return sb.toString();
}
或者,如果您对以下格式感到满意
[A, B, C]
你可以return family.toString();
TA贡献1828条经验 获得超3个赞
我接受了@GBlodgett 给我的答案:
public String getFamilyMembers() {
String a = "";
for (Person person : this.family) {
a = a.concat(person.toString());
}
return a;
}
输出:
A: BC
添加回答
举报
