Ik gebruik recursie en ik wil dat een Integer
-object zijn waarde behoudt voor recursieve aanroepen. bijv.
public void recursiveMethod(Integer counter) {
if (counter == 10)
return;
else {
counter++;
recursiveMethod(counter);
}
}
public static void main(String[] args) {
Integer c = new Integer(5);
new TestSort().recursiveMethod(c);
System.out.println(c);//print 5
}
Maar in de onderstaande code (waar ik een Teller
-klasse gebruik in plaats van Integer
wrapper-klasse, wordt de waarde gehandhaafd
public static void main(String[] args) {
Counter c = new Counter(5);
new TestSort().recursiveMethod(c);
System.out.println(c.getCount());//print 10
}
public void recursiveMethod(Counter counter) {
if (counter.getCount() == 10)
return;
else {
counter.increaseByOne();
recursiveMethod(counter);
}
}
class Counter {
int count = 0;
public Counter(int count) {
this.count = count;
}
public int getCount() {
return this.count;
}
public void increaseByOne() {
count++;
}
}
dus waarom primitve wrapper class zich anders gedraagt. Beide zijn immers objecten en in de reucrsive call geef ik het Integer
-object door en niet alleen int
zodat het Integer
-object ook moet behouden zijn waarde.