我想从静态块返回。
看起来返回和中断声明不起作用。有没有其他选择。
我知道糟糕的解决方法可能是创建一个标志并检查标志是否继续。
我知道初始化块不是用于进行计算,而是用于在类加载期间进行基本初始化。
答案 0 :(得分:18)
将代码委托给私有静态方法:
static {
initialize();
}
private static void initialize() {
foo();
if (someCondition) {
return;
}
bar();
}
答案 1 :(得分:7)
而不是使用return
只需将条件代码包装在if
。
答案 2 :(得分:1)
静态初始化程序没有复杂的业务,所以这可能是一个坏主意(即使您不购买SESE)。
实现回报的最小方法是使用标记的中断。
static {
init: {
...
break init;
}
}
它们非常罕见,通常出现在嵌套的for
循环中。新颖性可能会让读者感到有些狡猾的事情正在发生。
答案 3 :(得分:0)
您无法从静态初始化程序块返回。没有地方可以回归。但它不应该是必要的。您应该能够将代码重组为“单一输入,单一退出”。
答案 4 :(得分:0)
你不能从静态块返回,但更好的是使用一些其他函数来执行你的逻辑并返回到块。