Exception handeling mit finally und objektreferenzen

arhzz

Bekanntes Mitglied
Hallo! Ich soll diesen Code zu "analysieren" ohne ihn zu auszuführen.Ein Teil habe ich erledigt aber einen verstehe ich nicht ganz.Dass ist der Code;

Java:
int dummy() {

 int x = 0;
 try {
    x = x + 1;
    throw new Exception();
 } catch (Exception e) {
   x = x + 2;
   return x;
 } finally {
  x = x + 4; 
  }

Also den Teil den ich nicht ganz verstehe ist diese : " Was wäre, wenn x keine Primitive, sondern eine Referenz auf ein Objekt wäre, die Increments ein Feld des Objekts manipulieren würden, und die Methode die Objektreferenz zurückliefern würde. Wären diese Änderungen nach außen hin sichtbar? Wenn ja, warum? "

Was ist gemeint mit "Increments ein Feld des Objekts" und "nach außen sichtbar".

Danke!
 
Das soll bedeuten, dass du eine Klasse hast welche ein Feld hat (z.B. wieder x) und diese ist von außen sichtbar (public).

Dann hättest du halt MyClass x = new MyClass() um dann immer mit x.x zu arbeiten ...

Dann würde x zurück gegeben nur wie wirkt sich dann das finally noch aus bzw wirkt es sich anders aus?
 
Das soll bedeuten, dass du eine Klasse hast welche ein Feld hat (z.B. wieder x) und diese ist von außen sichtbar (public).

Dann hättest du halt MyClass x = new MyClass() um dann immer mit x.x zu arbeiten ...

Dann würde x zurück gegeben nur wie wirkt sich dann das finally noch aus bzw wirkt es sich anders aus?
Ooooh mit sichtbar meinten sie public private... Also die Änderungen sind nach außen hin sichtbar? Ja dass mit x.x zu arbeiten wurde gleich wie mit primitieven typen funktioniren, die Incrementes meine ich. Der finally block incrementiert den Wert von x aber das ändert den Rückgabewert nicht, da bei der Rückgabe eines int dessen Wert übergeben wird, nicht die Referenz der
Variablen x,denke ich. Aber hauptsache dass die Änderungen sichtbar sind, und die Incrementation von x würde gleich Funktionieren?
 
Die Referenz verweist auf eine Instanz mit dem Feld. Die Frage ist halt, was da dann passiert, wenn das Feld in finally noch verändert wird.
 

Zurück
Oben