Java:在任何地方无条件跳转到外部作用域

Java:在任何地方无条件跳转到外部作用域,java,Java,假设我有一个执行foo的程序。baz是一个需要测试的新功能 public static void main (String [] args) { foo (); // existing baz (); // new } 为了测试baz,我将把它放在foo面前。所以不用再等富了 我还想在baz之后结束(跳转到外部范围)。这是关于测试baz的,之后我想退出。但我不想把foo放在注释中(也许它比一行代码复杂得多) 我脑子里最清楚的就是这个 public static void mai

假设我有一个执行foo的程序。baz是一个需要测试的新功能

public static void main (String [] args)
{
  foo ();   // existing

  baz ();  // new
}
为了测试baz,我将把它放在foo面前。所以不用再等富了

我还想在baz之后结束(跳转到外部范围)。这是关于测试baz的,之后我想退出。但我不想把foo放在注释中(也许它比一行代码复杂得多)

我脑子里最清楚的就是这个

public static void main (String [] args)
{
   baz (); 
   if (1==1) return;  // unconditional jump to outer scope

   foo ();
}
我不喜欢这样

如果(1==1)

但我不知道还有什么选择

不允许简单返回(编译器错误,无法访问代码)

只有当我们讨论main时,System.exit才会起作用,但如果我的代码处于更大的上下文中,它就不会起作用。我想回到外部范围


有没有更好的想法?

一种替代方法是使用行业标准的测试驱动开发(TDD)方法

使用标准测试运行程序(如或)编写单元测试。如果采用这种方法,您将不必仅仅为了测试而修改生产代码

从测试类中,直接调用
baz()
。作为一个额外的好处,您现在还有一个测试,它将在现在和将来验证此方法的行为


我建议你仔细阅读TDD这个话题。有很多好的资源可用。这不是一个灵丹妙药,但使用这种方法有很多好处。

这是一种非常奇怪的测试方法。但是我不明白,如果您在再次快速测试后立即删除它,为什么会有关系。仅供参考,您可以将
1==1
替换为
true
。或者,您可以通过将定义为true的表达式替换为逻辑上仅为true的表达式(例如,
System.currentTimeMillis()>0
)来避免警告。但我不知道你到底想做什么。编译器不允许在无条件返回后使用代码是有原因的