PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Java] Konstruktoraufruf mit Anweisungsblock


EGG-Beater
2009-04-11, 02:13:53
Hi,

ich hab grad ein (für mich) merkwürdiges Stück Code entdeckt und weiß nicht so wirklich, was es damit auf sich hat.

IFu bla = new IFu() {
public void run(IBar blabla)
throws CoreException {
// Definition der Methode
}
};

Also vielleicht ist das ja eine ganz simple, grundlegende Sache, aber ich bin mir grad nicht bewusst, sowas schonmal in einem Buch gesehen zu haben.

Ist das etwas "normales"? Gibt es dafür irgendeinen speziellen Namen?

Falls jetzt nicht ganz klar ist, was ich nicht verstehe:
Ich weiß nicht, was der Anweisungsblock hinter dem new IFu() soll. Ich würde da ein Semikolon erwarten.

kloffy
2009-04-11, 02:21:56
Ja, das ist normale Java Syntax. Es wird eine Instanz einer anonymen inneren Klasse erzeugt, die das Interface IFu realisiert. Das wird häufig bei der Implementierung von EventListeners verwendet.

Richtig funky wird es, wenn man das ganze mit einem Initializer Block kombiniert.

HashMap map = new HashMap() {{ put("item1", "This is item1"); put("item2", "This is item2"); }};

EGG-Beater
2009-04-11, 02:37:43
Ahhhja. Das ging wohl bisher echt an mir vorbei.
Okay, vielen Dank. :)

Edit: Muss aber auch sagen, dass ich dieses Konzept der inneren Klassen bisher beim Lernen eher ignoriert hab. So rächt sich das... :/

Laz-Y
2009-04-11, 02:48:34
Wenn Du Dich intensiver mit Swing beschäftigst wirst das zwangsläufig kennen lernen ;)