Ursprungligen inskrivet av Zevon
Nu har du ju iof gått runt problemet genom att göra en egen int-wrapper, men du skulle kanske vara intresserad av en lösning problemet ändå.
Problemet kring att ändra på en Integers värde ligger ju i att värdet lagras som "private final int value".
Så det är ju inte tänkt att det ska gå att ändra på värdet.
Däremot om du verkligen vill ändra på värdet så skulle du ju kunna göra följande:
import java.lang.reflect.Field;
public class IntUpdater {
public static void main(String[] args) {
Integer a,b;
a=5;
b=a;
updateInteger(a, 99);
System.out.println(b);//Prints the value of a (99)
}
public static void updateInteger(Integer a,int b) {
try {
//Get field where the value is stored
Field field = Integer.class.getDeclaredField("value");
//Ignore that the field is declared "private final"
field.setAccessible(true);
//Change value
field.setInt(a,b);
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
}
}
Bör ju hantera exception på lite bättre sett, men du ser ju hur du kan göra iaf.