Java字节码中的奇数模式

Java字节码中的奇数模式,java,bytecode,decompiling,Java,Bytecode,Decompiling,我一直在研究一些Java字节码,我一直在其中发现一个奇怪的模式,我似乎无法将其转换为任何合理的Java构造: if ( <cond1> ) goto Label; do { <code1> Label: <code2> } while ( <cond2> ); if() 后藤标签; 做{ 标签: }while(); 是否有任何合理的Java构造可以反编译到?我所能想到的是

我一直在研究一些Java字节码,我一直在其中发现一个奇怪的模式,我似乎无法将其转换为任何合理的Java构造:

    if ( <cond1> )
        goto Label;

    do {
        <code1>
Label:
        <code2>
    } while ( <cond2> );
if()
后藤标签;
做{
标签:
}while();

是否有任何合理的Java构造可以反编译到?我所能想到的是非常复杂的模式,它引入了额外的状态来跟踪它是否是循环的第一次迭代。

你知道是什么创建了这个字节码吗?谢谢,我应该选择for循环模式。我现在可以看到代码1显然是增量代码。
for (init condition for which cond2 reduces to cond1; cond2; code1) {
  code2;
}