Java 什么可以使eclipse调试器将“while”内容跳过到内部开关的“default”中断?

Java 什么可以使eclipse调试器将“while”内容跳过到内部开关的“default”中断?,java,eclipse,debugging,while-loop,switch-statement,Java,Eclipse,Debugging,While Loop,Switch Statement,在java项目中,我有以下代码: public static <return> method(<parameters>){ 1 <any method call> 2 while( <conditions> ){ 3 <any method call> 4 switch(<enum or integer>){ 5 case 0: 6 <any method cal

在java项目中,我有以下代码:

public static <return> method(<parameters>){
1   <any method call>
2   while( <conditions> ){
3       <any method call>
4       switch(<enum or integer>){
5       case 0:
6       <any method call>
7           break;
8       case 1:
9       <any method call>
10          break;
11      case 3:
12      <any method call>
13          break;
14      default:
15      <any method call>
16          break;
17      }
18   <any method call>
19   }
  }
使用调试器时,第一次输入while时,它从2跳到16

我一直在尝试用精简的代码复制它,但没有成功,并试图找出是哪一部分导致了这种奇怪的行为,但直到现在,只发现了另一件奇怪的事情:

当我在1处声明一个伪变量并在18处修改它时,在3处不起作用,行为是在2之后输入第3行

编辑:


我认为我们需要看到这一部分的实际代码。我猜这不是eclipse所做的,而是javac所做的某种优化。您能编译代码并查看javap输出吗?在您提到的行中添加调试输出。例如,只需记录您在第2行。对所有管线执行此操作,并观察日志。我打赌你的代码通过的实际行不是调试器显示的行。奇怪的是,在进入while条件检查之前,跳转到“break”行,这只是第一次。记录每一行并没有提供新的线索。顺便说一句,我认为这对执行没有影响,但我想了解发生了什么,以防万一。