そのため、コンパイル済みの Java プログラムにわずかな有効な法的変更を加えようとしています。JD-GUI for Mac を使用して逆コンパイルしています。ほとんどの場合、逆コンパイルされたコードにはエラーがありませんが、宣言されていない変数、複数の同一の変数宣言、すぐにコンパイルできない奇妙なステートメントなど、奇妙なことがいくつかあります。逆コンパイルされたコードの奇妙なステートメントのいくつかは、本当に不可解です。特に 1 つの switch ステートメントで問題が発生しました。
switch ($SWITCH_TABLE$PackageName$ClassName$InnerEnumName()[getPlatform().ordinal()])
PackageName.ClassName はこのステートメントが含まれるクラスであり、InnerEnumName は ClassName 内の内部列挙型です。getPlatform() は ClassName のメソッドであり、InnerEnumName 型の列挙型を返すことにも注意してください。
奇妙な部分は、このクラスから問題のあるステートメントを取り除いてコンパイルし、プログラムに挿入し直したところ、動作し始めましたが、いくつかの奇妙なバグがありました。たとえば、switchステートメントを次のように変更した場合
switch (getPlatform().ordinal())
ケース 4 にヒットするはずのときに、ケース 3 (3 番目のケースと値 3 のケース) にヒットし始めました (再び 4 番目のケースと値 4 のケース)。