在一本关于操作栏的书中给出的android代码示例中,给出的示例如下:
MenuItem menu1 = menu.add(0, 0, 0, "Item 1");
{
menu1.setIcon(R.drawable.ic_launcher);
menu1.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
}
如何在分号后使用花括号?显然这里有一些我不明白的概念。
在这种情况下,它们是完全可选的,根本没有副作用。在您的示例中,它唯一的目的是通过指定属于控件的属性分配来使代码更具可读性。你也可以不用大括号来做。但是,如果您使用工具重新格式化您的代码,缩进可能会消失。
但是,如果您有一个 Method 并将 {} 放在那里,您可以创建一个新的变量范围:
void someMethod() {
{
int x = 1;
}
// no x defined here
{
// no x here, so we may define a new one
string x = "Hello";
}
}
您可以在 Method 中可以启动语句(变量声明、方法调用、循环等)的任何位置启动新范围
注意:例如,当您有一个 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 等也是如此。如果您考虑一下,即使方法主体的大括号也以这种方式工作:它们创建了一个新范围,它是类范围顶部的“层”。
它被称为匿名代码块,它们应该是restrict the variable scope
.
这些是初始化块。
我认为这不是初始化块的正确用法。除了您制作的示例之外,这些块仅用于初始化目的。点击这里查看详细信息。