Единственная цель дополнительных фигурных скобок состоит в том, чтобы обеспечить предел объема. Эти List<PExp> copy
будет только существовать в тех фигурных скобках и не будет иметь никакого объема за пределами них.
, Если это сгенерировано код, я предполагаю, что генератор кода делает это так, это может ввести некоторый код (такой как это), не имея необходимость волноваться о том, сколько раз это вставило List<PExp> copy
и не имея необходимость волноваться о возможном переименовании переменных, если этот отрывок вставляется в тот же метод несколько раз.
Я второй, что матовый 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");
}
};
Некоторые платформы поблочного тестирования взяли этот синтаксис к другому уровню, который действительно позволяет некоторые гладкие вещи, которые выглядят полностью некомпилируемыми для работы. Так как они взгляд незнакомый, я не такой большой поклонник сам, но стоит, по крайней мере, распознать то, что продолжается, если Вы натыкаетесь на это использование.
Я соглашаюсь с предельным ответом объема, но добавил бы одну вещь.
Иногда Вы видите конструкцию как этот в коде людей, которым нравится сворачивать разделы их кода и иметь редакторов, которые свернут фигурные скобки автоматически. Они используют его для складывания их кода в логических разделах, которые не попадают в функцию, класс, цикл, и т.д. который обычно складывался бы.
Я на самом деле предположил бы, что кто-то еще забыл оператор.
редко существует серьезное основание даже обеспокоиться созданием дополнительных областей действия блока. В этом и большинстве случаев, намного более вероятно, что кто-то, возможно, забыл вводить их оператор управления, чем случается так, что они делали что-то умное.
Они делают внутренний объем. Переменная, объявленная в этих фигурных скобках, не видима за пределами них. Это также относится к C/C++.
Они определяют новый объем, что означает, что все объявленное в этом объеме не видимо вне фигурных скобок.
Как интересное примечание: фигурные скобки на самом деле включают класс операторов: объявления.
Это недопустимо: if(a) int f;
, но это законно: if(a) { int f; }
Я думаю, что они просто определяют уровень без имени объема.
Приносить объем, копия не будет видима за пределами него, таким образом, можно будет объявить другую переменную с тем же именем позже. И это может быть собрано сборщиком "мусора" прямо после выхода из того объема. В этом случае копия служит временной переменной, таким образом, это - хороший пример.