【发布时间】:2014-09-10 11:48:13
【问题描述】:
我认为这个问题与这个问题有关:Is Java "pass-by-reference" or "pass-by-value"?,但并不完全相同。
假设我有这个循环代码:
ArrayList<foo> list = new ArrayList<foo>();
Calendar cal = Calendar.getInstance();
for(int i = 0; i < 10; ++i) {
cal.set(Calendar.HOUR, i);
list.add(new foo(cal));
}
for(int i = 0; i < 10; ++i) {
System.out.print(list.get(i).calToString());
}
foo.class:
public class foo {
private Calendar mCal;
public foo(Calendar cal) {
mCal = cal;
}
public String calToString() {
return String.valueOf(mCal.get(Calendar.HOUR));
}
}
结果列表将其所有项目 Calendar.HOUR 设置为 9。它打印9999999999。我怎样才能使每个项目分别有0-9?在循环内实例化变量cal 是否会成为性能问题(如果foo 是一个更复杂的类)?
【问题讨论】:
标签: java