Что делает фигурные скобки в Java подразумевают под собой?

76
задан Peter Mortensen 20 December 2016 в 19:10
поделиться

9 ответов

Единственная цель дополнительных фигурных скобок состоит в том, чтобы обеспечить предел объема. Эти List<PExp> copy будет только существовать в тех фигурных скобках и не будет иметь никакого объема за пределами них.

, Если это сгенерировано код, я предполагаю, что генератор кода делает это так, это может ввести некоторый код (такой как это), не имея необходимость волноваться о том, сколько раз это вставило List<PExp> copy и не имея необходимость волноваться о возможном переименовании переменных, если этот отрывок вставляется в тот же метод несколько раз.

118
ответ дан matt b 24 November 2019 в 11:15
поделиться

Я второй, что матовый b записал, и я добавлю, что другое использование, которое я видел анонимных фигурных скобок, должно объявить неявного конструктора в анонимных классах. Например:

  List<String> names = new ArrayList<String>() {
    // I want to initialize this ArrayList instace in-line,
    // but I can't define a constructor for an anonymous class:
      {
        add("Adam");
        add("Eve");
      }

  };

Некоторые платформы поблочного тестирования взяли этот синтаксис к другому уровню, который действительно позволяет некоторые гладкие вещи, которые выглядят полностью некомпилируемыми для работы. Так как они взгляд незнакомый, я не такой большой поклонник сам, но стоит, по крайней мере, распознать то, что продолжается, если Вы натыкаетесь на это использование.

26
ответ дан Dov Wasserman 24 November 2019 в 11:15
поделиться

Я соглашаюсь с предельным ответом объема, но добавил бы одну вещь.

Иногда Вы видите конструкцию как этот в коде людей, которым нравится сворачивать разделы их кода и иметь редакторов, которые свернут фигурные скобки автоматически. Они используют его для складывания их кода в логических разделах, которые не попадают в функцию, класс, цикл, и т.д. который обычно складывался бы.

7
ответ дан Eli 24 November 2019 в 11:15
поделиться

Я на самом деле предположил бы, что кто-то еще забыл оператор.

редко существует серьезное основание даже обеспокоиться созданием дополнительных областей действия блока. В этом и большинстве случаев, намного более вероятно, что кто-то, возможно, забыл вводить их оператор управления, чем случается так, что они делали что-то умное.

4
ответ дан halfer 24 November 2019 в 11:15
поделиться

Они делают внутренний объем. Переменная, объявленная в этих фигурных скобках, не видима за пределами них. Это также относится к C/C++.

2
ответ дан Paweł Hajdan 24 November 2019 в 11:15
поделиться

Они определяют новый объем, что означает, что все объявленное в этом объеме не видимо вне фигурных скобок.

0
ответ дан fhe 24 November 2019 в 11:15
поделиться

Как интересное примечание: фигурные скобки на самом деле включают класс операторов: объявления.

Это недопустимо: if(a) int f;

, но это законно: if(a) { int f; }

0
ответ дан Hugo 24 November 2019 в 11:15
поделиться

Я думаю, что они просто определяют уровень без имени объема.

0
ответ дан Peter Mortensen 24 November 2019 в 11:15
поделиться

Приносить объем, копия не будет видима за пределами него, таким образом, можно будет объявить другую переменную с тем же именем позже. И это может быть собрано сборщиком "мусора" прямо после выхода из того объема. В этом случае копия служит временной переменной, таким образом, это - хороший пример.

0
ответ дан Peter Mortensen 24 November 2019 в 11:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: