В принципе, нет никакого практического способа сделать это в Java. Кажется, вы пытаетесь сделать эквивалент «goto», и это не поддерживается на Java. Операторы break label
и continue label
могут подключаться только к , прилагая к нему.
Теперь в соответствии с Java формальной грамматики вы могли бы написать это:
s: {
continue s;
System.out.println("I am not supposed to print this");
}
System.out.println("I am suppose to print this");
но еще не будет компилировать по двум причинам:
Смотрите также: Alternative to a goto statement in Java
Но есть один довольно хитрый способ получить код "работать":
static final boolean flag = true; // class attribute ...
...
s: {
if (flag) break s;
System.out.println("I am not supposed to print this");
}
System.out.println("I am suppose to print this");
"тест" будет оцениваться компилятор так, чтобы break
был фактически безусловным. Но JLS говорит, что первый println
будет обработан как доступным, так что вы не получите недостижимую ошибку кода.
Я думаю, что это может быть полезным, если вы генерируете этот исходный код. Кроме того, это (ИМО) просто любопытство. Это проще сделать с помощью обычного заявления if
/else
... или путем полного удаления первой «печати».
Java не поддерживает 'GOTO' (и тому подобное). И, честно говоря, я думаю, что 'GOTO' делает код запутанным. – str