edw*_*ard 0 java foreach arraylist tostring object-to-string
我目前有一个toString方法,类似于下面的方法.请忽略对象仅被临时命名.我这样做是为了使每个变量的类型之间没有混淆等:
@Override
public String toString() {
for(Object object : ArrayList) {
System.out.println("This object is a " + object.getVariableA() + " and a " + object.getVariableB() + ".");
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
但是toString方法要求我返回一个值.我显然只想返回我正在打印的字符串,虽然如果我在那里放置一个返回语句,它只会打印一个Object而不是所有我正在循环的对象.什么是打印所有这些值的最佳方法,而不是简单地返回null,因为我不希望在所有对象之后打印出来?我还想确保这些对象中的每一个都按照它们当前的单独行打印,所以请不要建议包含一个长连接字符串而不包含换行符的解决方案,因为这不适合这种情况.
提前致谢!
toString不应该输出什么都.它的工作是返回相关对象的适当字符串表示,而不是在任何地方输出该表示.这不在其问题领域.
相反,构建并返回一个字符串(可能使用a StringBuilder).
例如,像:
@Override
public String toString() {
StringBuilder sb = new StringBuilder(some_appropriate_size);
for(Object object : ArrayList) {
sb.append("This object is a ")
.append(object.getVariableA())
.append(" and a ")
.append(object.getVariableB())
.append(".\n");
}
return sb.toString();
}
Run Code Online (Sandbox Code Playgroud)
我还想确保这些对象中的每一个都打印在当前的单独行上,所以请不要建议包含一个长连接字符串的解决方案,因为这不适合这种情况.
上面将数组列表中的项放在单独的"行"上(通过\n).但是"一个长期加入String"是唯一合适的事情toString.如果你想要一个不同的结果,你必须使用不同的方法,而不是违反合同toString.
| 归档时间: |
|
| 查看次数: |
2941 次 |
| 最近记录: |