369 Stimmen

Was ist die Initialisierung der doppelten Klammer in Java?

Was ist die Syntax für die Initialisierung der doppelten Klammer ( {{ ... }} ) in Java?

4voto

Anton Dozortsev Punkte 4604

Sie können einige Java-Anweisungen als Schleife einfügen, um die Sammlung zu initialisieren:

List<Character> characters = new ArrayList<Character>() {
    {
        for (char c = 'A'; c <= 'E'; c++) add(c);
    }
};

Random rnd = new Random();

List<Integer> integers = new ArrayList<Integer>() {
    {
         while (size() < 10) add(rnd.nextInt(1_000_000));
    }
};

Aber dieser Fall wirkt sich auf die Leistung aus, prüfen Sie dies Diskussion

1voto

Ankit Sharma Punkte 1115

Die erste Klammer erstellt eine neue anonyme Klasse und der zweite Satz von Klammern erstellt einen Instanzinitialisierer wie der statische Block.

Wie schon andere gesagt haben, ist es nicht sicher zu verwenden.

Für die Initialisierung von Sammlungen können Sie jedoch immer diese Alternative verwenden.

  • Java 8

    List<String> list = new ArrayList<>(Arrays.asList("A", "B", "C"));

  • Java 9

    List<String> list = List.of("A", "B", "C");

-2voto

Chuck Vose Punkte 4453

Dies scheint dasselbe zu sein wie das in Flash und Vbscript so beliebte Schlüsselwort with. Es ist eine Methode, um zu ändern, was this ist und nichts weiter.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X