Erste Schritte Geschweifte Klammern

K

Klammerheinz

Gast
Hallo!

Ich habe mal eine kleine Anfängerfrage zu einem Programm das ich ändern muss:

Java:
class A{
//Was ist das für ein Konstrukt?
{
...
}

}

Mitten in der Klasse sind einfach {...}-Block ohne Modifier. Handelt es sich um die Kurzform von static{...}?

Danke.
 

Landei

Top Contributor
Nein, aber so ähnlich: Ein Initialisierungsblock. Ist manchmal nützlich, etwa wenn man viele unabhängige Konstruktoren hat, und immer eine bestimmte Aufgabe erledigen muss, oder für anonyme Klassen, die keinen Konstruktor haben. Manchmal sieht man z.B. das (meiner Meinung nach unschöne):

Java:
class X {
   private List<String> list = new ArrayList<String>(){ { add("foo"); add("bar"); } };
}

Hier wird eine anonyme Unterklasse von [c]ArrayList[/c] abgeleitet, und (mangels eigenem Konstruktor) über einen Intialisierungsblock, äh... initialisiert. Wie gesagt, würde ich aber eher von abraten.

Siehe z.B. Initialisierungsblöcke
 
Zuletzt bearbeitet:

Michael...

Top Contributor
Mitten in der Klasse sind einfach {...}-Block ohne Modifier. Handelt es sich um die Kurzform von static{...}?
Nein, wenn static, dann muss auch static davor stehen. Die genaue Bezeichnung fällt mir nicht ein. Es handelt sich um einen Initialisierungsblock, der beim Erzeugen eines Objekts der Klasse aufgerufen wird - noch vor dem eigentlichen Konstruktor.
 

kaetzacoatl

Bekanntes Mitglied
Ich hab das gleiche mitten in einer Methode stehen.
Finds grad nicht, aber ich glaubt da ist eine Schleife drin.
(is jetzt nicht dringeng aber mich würde es mal interessieren)
 
H

hüteüberhüte

Gast
[OT]
Wie peinlich! Latürnich muss es "(mangels eigenen Konstruktors)" heißen. Genitiv ins Wasser, denn es ist Dativ! Oder umgekehrt...

"Mangels eigenem Konstruktor" ist auch richtig. Aber wenn es Dativ sein soll, dann (wie bereits richtig gemacht) gehört auch kein Genitiv-s dazu

Imho kann man sehr wohl "Mangels wem?" oder "Mangels wessen?" fragen[/OT]
 

Mujahiddin

Top Contributor
Nein, aber so ähnlich: Ein Initialisierungsblock. Ist manchmal nützlich, etwa wenn man viele unabhängige Konstruktoren hat, und immer eine bestimmte Aufgabe erledigen muss, oder für anonyme Klassen, die keinen Konstruktor haben. Manchmal sieht man z.B. das (meiner Meinung nach unschöne):

Java:
class X {
   private List<String> list = new ArrayList<String>(){ { add("foo"); add("bar"); } };
}

Hier wird eine anonyme Unterklasse von [c]ArrayList[/c] abgeleitet, und (mangels eigenem Konstruktor) über einen Intialisierungsblock, äh... initialisiert. Wie gesagt, würde ich aber eher von abraten.

Siehe z.B. Initialisierungsblöcke

Tut mir leid aber diese Unterklasse, wie du sie beschrieben hast, bringt's ja mal gar nicht! Na gut, in sehr wenigen Situationen vielleicht, aber an sich weiß ich nicht, was jeder gegen anonyme Unterklassen hat.
Sowas wie
Java:
private final JTextField field = new JTextField(){
    @Override
    public void paste(){
        super.paste();
        field.setText(field.getText().replaceAll("[^0-9]", "")); // lösche alle nichtnumerischen Zeichen
    }
};
finde ich absolut praktisch... Und generell "new ActionListener(){ blabla };" oder "new Thread(new Runnable(){blabla});" verwendet auch jeder!

(mal ein simples Beispiel, um bei einem numerischen Textfeld Einfügen von Buchstaben zu vermeiden)
 

Landei

Top Contributor
Tut mir leid aber diese Unterklasse, wie du sie beschrieben hast, bringt's ja mal gar nicht!
Ich habe es nur als Anwendungsbeispiel gebracht und ausdrücklich nicht empfohlen. Es ist aber schon anzumerken, dass es eine große Lücke bei den Collections ist, dass diese nicht ohne weiteres über den Konstruktor initialisiert werden können (abgesehen von [c]EnumSet.of()[/c], und abscheulichen Hacks wie [c]new ArrayList<String>(Arrays.asList("foo","bar"));[/c])

Niemand "hat etwas gegen" anonyme Unterklassen, wo hast du das gelesen? Aber anonyme Unterklassen haben nun mal keinen eigenen Konstruktor, und genau da können Initialisierungsblöcke helfen. Bei "normalen" Klassen sind diese zwar erlaubt, aber (im Gegensatz zu statischen Initialisierungsblöcken) weniger nützlich, und führen regelmäßig zur Verwirrung (manche kennen das Feature nicht, oder die Abarbeitungsreihenfolge ist nicht klar).
 
B

bygones

Gast
Ich habe es nur als Anwendungsbeispiel gebracht und ausdrücklich nicht empfohlen. Es ist aber schon anzumerken, dass es eine große Lücke bei den Collections ist, dass diese nicht ohne weiteres über den Konstruktor initialisiert werden können (abgesehen von [c]EnumSet.of()[/c], und abscheulichen Hacks wie [c]new ArrayList<String>(Arrays.asList("foo","bar"));[/c])
[OT]Guava - bzw die ehemaligen google-collections haben da schoene Aushilfen[/OT]
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
O Java Kara geschweifte Klammern Java Basics - Anfänger-Themen 2
R alleinstehende geschweifte Klammern Java Basics - Anfänger-Themen 5
E Regex für geschweifte Klammern? Java Basics - Anfänger-Themen 10
Daniel_L Geschweifte Klammern nutzen oder nicht? Java Basics - Anfänger-Themen 3
W Problem mit Programm (geschweifte Klammern setzen) Java Basics - Anfänger-Themen 11
M for schleife ohne geschweifte Klammer Java Basics - Anfänger-Themen 15
A Hat jemand einen ratschlag, wie java beim replaceALL eine geschweifte klammer erkennt ? Java Basics - Anfänger-Themen 5
M Klasse in Runden Klammern bei Objektimplementierung Java Basics - Anfänger-Themen 4
J Eckige Klammern werden nicht erkannt Java Basics - Anfänger-Themen 1
J Klammern werden fälschlicherweise eingelesen Java Basics - Anfänger-Themen 2
T split innerhalb Klammern ignorieren? Java Basics - Anfänger-Themen 6
S Java Text splitten mit Tabs, Zeilen, Zeichen und Klammern. Java Basics - Anfänger-Themen 6
D Werte in eckige Klammern finden Java Basics - Anfänger-Themen 3
D Compiler-Fehler kurze Frage (Fehler): runde Klammern im Println Java Basics - Anfänger-Themen 3
B Java - Reguläre Ausdrücke - RegEx oder Regular Expressions - Eckige Klammern Java Basics - Anfänger-Themen 2
F while Schleife ohne Klammern Java Basics - Anfänger-Themen 9
N enum vergleiche Klammern? Java Basics - Anfänger-Themen 5
H Nur Zahlen, Klammern und Operatoren Java Basics - Anfänger-Themen 3
H Wohlgeformte Klammern Java Basics - Anfänger-Themen 26
M keine geschwungenen Klammern Java Basics - Anfänger-Themen 9
B Text zwischen geschweiften klammern Java Basics - Anfänger-Themen 11
B bestimmte klammern im string ersetzten Java Basics - Anfänger-Themen 17
B Klammern im String Java Basics - Anfänger-Themen 9
T Syntax für .split mit Klammern Java Basics - Anfänger-Themen 2
StrikeTom Per regex string zwischen klammern raussuchen Java Basics - Anfänger-Themen 14
Luk10 Wo zum Teufel fehlen Hier Klammern? Java Basics - Anfänger-Themen 2
K println - Klammern von Operationen Java Basics - Anfänger-Themen 4
W Suche nach strings zwischen eckigen Klammern mittels regulärer Ausdrücke Java Basics - Anfänger-Themen 3
D Klammern in regulären Ausdrücken Java Basics - Anfänger-Themen 2
C Klammern einlesen!!! Falsche Ausgabe!!!! Java Basics - Anfänger-Themen 4
Developer_X Problem mit Klammern im Code Java Basics - Anfänger-Themen 17
M Wie ersetzt man einen String mit eckigen Klammern Java Basics - Anfänger-Themen 5
E Irgendwo fehlen Klammern ? Java Basics - Anfänger-Themen 6
B Was steht innerhalb von solchen <.> Klammern Java Basics - Anfänger-Themen 2
H Klammern bei replaceAll-Methode Java Basics - Anfänger-Themen 3
E Klammern in einem String entfernen! Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben