誰かがJavaで次のものを見たことがありますか?
public void methodName(){
search:
for(Type[] t : Type[] to){
do something...
}
}
この文脈での「search:」の使用に関するドキュメントを誰かに教えてもらえますか?「search:」の検索は生産的ではありませんでした。
ありがとう
ラベルです。Java言語仕様の§14.7から:
ステートメントにはラベルプレフィックスが付いている場合があります。
(退屈な文法は省略、マークアップするのは苦痛)
CやC++とは異なり、Javaプログラミング言語には
goto
ステートメントがありません。識別子ステートメントラベルは、ラベル付きステートメント内の任意の場所に表示されるbreak
(§14.15)またはcontinue
(§14.16)ステートメントで使用されます。
ラベルが頻繁に表示される場所の1つは、ネストされたループです。ここでは、両方のループから早期に抜け出すことができます。
void foo() {
int i, j;
outerLoop: // <== label
for (i = 0; i < 100; ++i) {
innerLoop: // <== another label
for (j = 0; j < 100; ++j) {
if (/*...someCondition...*/) {
break outerLoop; // <== use the label
}
}
}
}
通常break
、内側のループでは内側のループだけが壊れますが、外側のループは壊れません。しかし、それはラベルを使用して 指示 break
されているため、外側のループを壊します。
これは、ラベル付きループの例です。
これにより、現在のループの代わりに、break
またはcontinue
ターゲットループを実行できます。
Outer:
for(int intOuter=0; intOuter < intArray.length ; intOuter++)
{
Inner:
for(int intInner=0; intInner < intArray[intOuter].length; intInner++)
{
if(intArray[intOuter][intInner] == 30)
{
blnFound = true;
break Outer; // this line breaks the outer loop instead of the inner loop.
}
}
}
例:http ://www.java-examples.com/java-break-statement-label-example
これは、JLSで定義されているJavaラベルです:http://docs.oracle.com/javase/specs/jls/se5.0/html/statements.html#78994