2012-04-02 3 views
2

Можно создать дубликат:
Returning in a static initializerВозвращение из статического инициализатора

Есть ли способ, чтобы выйти из статического Инициализатора в Java, что-то вроде кода ниже (который не компилируется):

public class Test { 

    private static int i = 1; 

    static { 
     if (i == 0) { 
      return; // DOESN'T COMPILE 
     } 
     i = 0; 
    } 
} 

пс: да, я знаю, пример не имеет смысла, i == 0 всегда будет быть ложным на данный момент, но это не главное!

+0

использовать 'System.exit (0)' вместо этого. –

+1

@ Eng.Fouad Я не хочу выходить, просто продолжайте остальную часть кода - дубликаты ответов, почему это невозможно, спасибо. – assylias

+1

Итак, используйте метку на блоке экземпляра и сломайте эту метку. 'static {label: {if (i == 0) break label; i = 0}} ' –

ответ

2

быстрый и грязный метод был бы, неправильного использования в for цикл и использовать его break заявление для управления потоком:

static 
{ 
    int i = 0; 

    for(;;) 
    { 
     if(i == 0) 
      break; 
     // more code 
     // more conditions 
     // don't forget the final break 
     break; 
    } 
} 
+0

Использование ярлыка чище :) .. Я хочу ответить на этот +1, но у меня заканчивается голова до конца дня :) –

+2

:-) Вот почему я сказал быстро и грязно ^^ – Neet

Смежные вопросы