나는이 질문이 Is Java "pass-by-reference" or "pass-by-value"?과 관련이 있다고 생각하지만 실제로는 그렇지 않다. 가정하자루프에서 Java "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));
}
}
결과 목록은 모든 항목을 9
-Calendar.HOUR
세트가 있습니다. 9999999999
을 인쇄합니다. 어떻게하면 각 항목이 0-9가되도록 만들 수 있습니까? 루프 내의 변수 cal
을 인스턴스화하는 것이 성능 문제가됩니까 (foo
이 더 복잡한 클래스 인 경우)?
가능한 중복 http://stackoverflow.com/questions/18249555/is-java-pass-by-value 또는 -pub-by-reference-or-both) –