参见英文答案 >
Anonymous code blocks in Java7个
在一本关于动作栏的书中给出的android代码的例子中,给出的示例如下:
在一本关于动作栏的书中给出的android代码的例子中,给出的示例如下:
MenuItem menu1 = menu.add(0,"Item 1"); { menu1.setIcon(R.drawable.ic_launcher); menu1.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); }
如何在分号后使用花括号?这里有一些我不明白的概念.
解决方法
在这种情况下,它们是完全可选的,根本没有副作用.在您的示例中,唯一的目的是通过打算属于控件的属性分配来使代码更易于阅读.你也可以没有大括号做.但是,如果您使用工具重新格式化代码,缩进可能已经过去了.
但是,如果你有一个方法,你把{}放在那里,你可以创建一个新的变量范围:
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"; } }
对于,尝试,抓住等也是一样的.如果你想到它,即使方法体的大括号也以这种方式工作:它们创建一个新的范围,它是一个“层”在类范围之上.