Используя {} после точки с запятой

В примере кода Android, приведенном в книге о панели действий, приведенный образец выглядит следующим образом:

MenuItem menu1 = menu.add(0, 0, 0, "Item 1"); { menu1.setIcon(R.drawable.ic_launcher); menu1.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); } 

Как использовать фигурные скобки после полуколоны? Существует определенная концепция, которую я не понимаю здесь.

Solutions Collecting From Web of "Используя {} после точки с запятой"

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

Однако, если у вас есть метод и вы помещаете {} туда, вы можете создать новую область переменной:

 void someMethod() { { int x = 1; } // no x defined here { // no x here, so we may define a new one string x = "Hello"; } } 

Вы можете запустить новую область в любом месте метода, где вы можете запустить инструкцию (объявление переменной, вызов метода, цикл и т. Д.).

Примечание. Если у вас есть, например, if-statement, вы также создаете новую область переменных с этими скобками.

 void someMethod() { if (someThing) { int x = 1; } // no x defined here if (somethingElse) { // no x here, so we may define a new one string x = "Hello"; } } 

То же самое верно для while, for, try, catch и так далее. Если вы думаете об этом, то даже фигурные скобки тела метода работают таким образом: они создают новую область, которая является «слоем» поверх класса.

Это называется анонимными блоками кода, они должны restrict the variable scope .

Это Инициализационные блоки .

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