8

我想从静态块返回。

看起来 return 和 break 语句不起作用。有没有其他选择。

我知道不好的解决方法可能是创建一个标志并检查标志是否继续。

我了解初始化块不是用于进行计算,而只是用于类加载期间的基本初始化。

4

5 回答 5

18

将代码委托给私有静态方法:

static {
    initialize();
}

private static void initialize() {
    foo();
    if (someCondition) {
        return;
    }
    bar();
}
于 2012-06-20T11:11:22.037 回答
7

而不是return只使用将条件代码包装在if.

于 2012-06-20T11:09:46.383 回答
4

静态初始化器没有复杂的业务,所以这可能是个坏主意(即使您不购买 SESE)。

实现回报的最小方法是使用标记中断。

static {
    init: {
        ...
           break init;
    }
}

它们非常罕见,通常出现在嵌套for循环中。这种新颖性可能会让读者知道正在发生一些有点狡猾的事情。

于 2012-06-20T14:03:56.567 回答
0

您不能从静态初始化程序块返回。无处可归。但这不应该是必要的。您应该能够将代码重组为“单入口,单出口”。

于 2012-06-20T11:12:01.500 回答
0

您不能从静态块返回,但最好使用其他一些函数来执行您的逻辑并返回到块。

于 2012-06-20T11:13:18.163 回答