因此,我试图对已编译的 java 程序进行轻微有效的合法更改。我正在使用 JD-GUI for Mac 对其进行反编译。在大多数情况下,反编译的代码是没有错误的,但也有一些奇怪的东西,比如未声明的变量、多个相同的变量声明以及一些不易编译的奇怪语句。反编译代码中的一些奇怪的语句实在令人费解。我在使用一个 switch 语句时遇到了问题:
switch ($SWITCH_TABLE$PackageName$ClassName$InnerEnumName()[getPlatform().ordinal()])
其中 PackageName.ClassName 是该语句所在的类,InnerEnumName 是 ClassName 中的内部枚举。另请注意,getPlatform() 是 ClassName 中的一个方法,它返回 InnerEnumName 类型的枚举
奇怪的是,当我刚刚剥离了此类有问题的语句,对其进行编译并将其重新插入程序时,它开始工作但有一些奇怪的错误。例如,当我将 switch 语句更改为
switch (getPlatform().ordinal())
当它应该达到第 4 种情况(再次是第 4 种情况以及值 4 的情况)时,它开始达到第 3 种情况(第 3 种情况和值 3 的情况)