Frage von XUserZ, 49

This in inneren Klassen von java?

Hallo Gemeinde, wie greife ich bei einer inneren Klasse z.B. In der Main auf das this des Objekts zu, an welches das Objekt der inneren Klasse gebunden ist? Z.B. New upper().new Inner() --> wie komme ich an das this von Upper in Inner.

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von Tobihogh, 28

Upper.this

Kommentar von XUserZ ,

Ich meinte eigentlich innerhalb der inneren Klasse. Also z.B.

public class Upper{

class Inner{

// hier auf das this von Upper zugreifen

}

}

Kommentar von Tobihogh ,

hast du Upper.this ausprobiert ich habe es so in Erinnerung. Ich schau nachher mal an meinem Computer aufm Handy hab ich keine IDE

Kommentar von XUserZ ,

Ja, das habe ich getestet. Leider geht das schief (Compiler meckert).

Kommentar von Tobihogh ,

Folgenden wird bei mir Fehlerfrei compeliert:

public class Test {

private int i = 3;

public Test() {
new Innen().foo();
}

public int syso() {
return i;
}

void giveOutFoo(Test t) {
System.out.println(t.syso());
}

class Innen {
private int i = 6;

void foo() {
System.out.println(i);
System.out.println(Innen.this.i);
System.out.println(Test.this.i);
System.out.println(Test.this.syso());
Test.this.giveOutFoo(Test.this);
}
}

public static void main(String[] args) {
new Test();
}

}

// Ausgabe:
// 6
// 6
// 3
// 3
// 3
Kommentar von PerfectMuffin ,

How compeling.

Kommentar von Tobihogh ,

Mit Eclipse. Sorry hab gerade gesehen im deutschen schreibt man kompiliert.

Kommentar von PerfectMuffin ,

Auf englisch "compiled", aber egal, mir war nur nach Erbsenzählen.

Kommentar von Tobihogh ,

Wir schreiben hir ja Deutsch ;) egal. Funktioniert es jetzt?

Kommentar von Tobihogh ,

Schau dir mal das http://openbook.rheinwerk-verlag.de/javainsel9/javainsel_08_001.htm an. Das ist mein Lieblingsnachschlagewerk mit dem Kapitel zu äußere und innere Klassen.

Kommentar von PerfectMuffin ,

Ich habe die Insel im Regal stehen. Ich habe halt nur nie geschachtelte Klassen gebraucht. Nur evtl. enums.

Kommentar von XUserZ ,

Ja, vielen Dank! Ich habe einen Tippfehler gemacht (s in einer Klasse vergessen) ... vielleicht doch zukünftig wieder in der IDE arbeiten;-)

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten