A
public void test (Integer ddd) {
ddd = Integer.valueOf(3);
}
Das Problem an dieser Stelle ist, wie schon geschrieben, dass durch '=' dem Zeiger ein neues Objekt zugewiesen wird und ddd damit nicht mehr auf das Objekt zeigt, das ursprünglich übergeben wurde. Nun lässt Integer das ändern des eigenen Wertes nicht zu; geklappt hätte es auf folgende Art, wenn die Methode void setValue(int) existieren würde:
public void test(Integer ddd) {
ddd.setValue(3);
}
Wenn man nun eine eigene Integer-Klasse mit dieser Funktionalität schreibt, geht das ganze.
Was auch klappt:
public void test (int[] array) {
array[0] = 3;
}
Übergeben wird dann ein Array der Länge 1.