分号后使用{}

时间:2013-06-13 10:25:25

标签: java android

在关于操作栏的书中给出的android代码示例中,给出的示例如下:

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

如果在分号后使用花括号怎么样?显然有一些我不明白的概念。

3 个答案:

答案 0 :(得分:17)

在这种情况下,它们是完全可选的,完全没有副作用。在您的示例中,它的唯一目的是通过打算属于控件的属性赋值来使代码更具可读性。没有大括号,你也可以这样做。但是,如果您使用工具重新格式化代码,缩进可能会消失。

但是,如果您有一个方法并且在其中放置了{},则可以创建一个新的变量范围:

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

您可以在方法中的任何位置启动新范围,您可以在其中启动语句(变量声明,方法调用,循环等)。

注意:例如,当你有一个if语句时,你也可以用这个大括号创建一个新的变量范围。

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等同样如此。如果您考虑它,即使方法体的大括号也以这种方式工作:它们创建一个新的范围,它是类范围之上的“层”。

答案 1 :(得分:15)

它被称为匿名代码块,它们应该是restrict the variable scope

答案 2 :(得分:0)

这些是初始化块

我认为这不是初始化块的正确用法。 除了您生成的示例之外,这些块仅用于初始化目的。 Click Here详细视图。