Для чего нужен один {код} в Java? - PullRequest
5 голосов
/ 07 сентября 2011

Я недавно прочитал некоторый код, который использует специальный синтаксис относительно {}, я спросил более опытного разработчика Java, но он также не может ответить.

public void doSomething() {
    someWorks();
    {
        someVariables;
        someMoreWorks();
    }
    someEvenWorks();
    {
        ...
    }
}

Почему автор кода помещает эти строки в {}? Я предполагаю, что переменные, объявленные в {}, будут освобождены сразу после завершения выполнения {}, верно, потому что я больше не могу получить доступ к ним вне {}?

Ответы [ 3 ]

6 голосов
/ 07 сентября 2011

Да, единственная разница - в области видимости.

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

Я бы редко (если вообще когда-либо) встречал что-то подобное в «реальном» коде.

4 голосов
/ 07 сентября 2011

Это дает ему вложенную область для объявления «более локальных» переменных.

Я полагаю, что переменные, объявленные в {}, будут освобождены сразу после выхода {}, верно, потому что я больше не могу получить доступ к ним вне {}?

Зависит от вашего определения «release» (они, скорее всего, не будут собирать мусор до завершения метода, поэтому, если это важно, вы можете их обнулить), но да.

Другие редко встречающиеся применения фигурных скобок включают инициализаторы класса и экземпляра:

class A {
   static {
      // some class initialization code
   }

   {
      // some instance initialization code
   }

 }
1 голос
/ 07 сентября 2011

Тот факт, что автор поместил эти переменные в {}, указывает, что область действия этих переменных будет только областью действия метода, определенного {};в свою очередь, эти переменные будут доступны для сборки мусора, когда метод завершит выполнение.

...