我在看這段代碼,它看起來像:在java中調用的這種語法風格是什麼?似乎是在做事情直列
blah("....");
{
call1(blah);
call2();
{
inner1("...");
inner2("...");
}
}
我是新來的Java這麼有興趣知道要搜索什麼,這種風格看起來很有趣。
我在看這段代碼,它看起來像:在java中調用的這種語法風格是什麼?似乎是在做事情直列
blah("....");
{
call1(blah);
call2();
{
inner1("...");
inner2("...");
}
}
我是新來的Java這麼有興趣知道要搜索什麼,這種風格看起來很有趣。
這不是在做內聯,它只是設置一個單獨的範圍。如果您在該「內部」塊中聲明變量,則它們將不在外部塊中可用。如果您複製粘貼幾行代碼,並希望確保不重複使用第二位中第一位的變量,這會非常有用。我偶爾在單元測試中做過,但通常情況下,這是一個跡象表明您可能需要重構一下。
+1實際解釋它的功能 –
它只是一個包含一組語句的塊,沒有什麼特別的,儘管有時可以限制變量(a)的範圍。你可以做同樣的事情在C如:
int main (void) {
int i;
{
i = 1;
}
return 0;
}
(一):變量聲明內這樣的塊是不是塊的外部可見的,所以是這樣的:
{
int i = 1;
}
System.out.println (i);
將不會有效,因爲i
在結束大括號處「消失」。
這是一個聲明塊。請參閱Java Language Specification section 14.2。在你發佈的代碼中,它看起來毫無用處。爲變量(除其他事項)建立局部範圍很有用。
這是一個匿名代碼塊;請參閱Anonymous code blocks in Java以瞭解它是什麼(而不是)有用的一些討論。
這只是一個block
,這是一串用大括號括起來的陳述。您可能習慣將它們視爲if
聲明的主體,但也許您從來沒有這樣想過它們。
if (foo) { bar; }
我還沒有看到有額外塊寫很多代碼,雖然我有時想,如果它會利用它們來表示(例如)特別長,冗長的UI代碼段非常有用。我在有看到他們偶爾在OpenGL代碼中使用,使glBegin和glEnd語句脫穎而出。
glBegin(GL_LINES);
{
.. draw a bunch of primitives ..
}
glEnd();
也有可能是要利用它們來限制某些變量的範圍極少數情況下,因爲變量只作用域他們在那裏宣佈塊。
這只是一個本地範圍。您可以在覈心內容中引入範圍。
void foo()
{
int a;
{
int b = get();
bar(a, b);
}
{
int b = get();
bar(a, b);
}
}
每個變量只在其範圍內可見,所以你可以用它來保持名稱空間的清潔。在上面的例子中,如果沒有本地範圍,我將必須有一個b
的聲明,然後重複分配。由於不同的範圍,我可以複製/粘貼整個塊,並且我永遠不會將名稱b
泄漏到更大的範圍內,所以我不必擔心它。
這是沒有意義在你的榜樣(也許除了邏輯分組),但你可以使用這些模塊得到「更多的本地」變量(這樣就可以重複使用的名稱):
{
String x = "zzzz";
String y = doSomething(x);
doSomethingElse(y);
}
{
int x = 12;
long y = foo(x);
bar(y);
}
具體是什麼你指的是風格? – BVSmallman
爲什麼在'call2()'下面有一段代碼? – Paul
呃,你特別注意到這個「風格」?大括號的位置?缺乏駱駝名稱?還有其他的東西嗎?請澄清你正在尋找什麼。 – paulsm4