Поэтому я пытаюсь внести небольшие допустимые юридические изменения в скомпилированную Java-программу. Я декомпилирую его с помощью JD-GUI для Mac. По большей части декомпилированный код не содержит ошибок, но есть некоторые странные вещи, такие как необъявленные переменные, множественные идентичные объявления переменных и просто некоторые странные операторы, которые трудно скомпилировать. Некоторые странные утверждения в декомпилированном коде действительно озадачивают. В частности, у меня возникли проблемы с одним оператором switch:
switch ($SWITCH_TABLE$PackageName$ClassName$InnerEnumName()[getPlatform().ordinal()])
Где PackageName.ClassName — это класс, в котором находится этот оператор, а InnerEnumName — это внутреннее перечисление внутри ClassName. Также обратите внимание, что getPlatform() — это метод в ClassName, который возвращает перечисление типа InnerEnumName.
Странная часть заключается в том, что когда я просто очистил этот класс от проблемных операторов, скомпилировал его и вставил обратно в программу, он начал работать, но имел несколько странных ошибок. Например, когда я изменил оператор switch на
switch (getPlatform().ordinal())
он начал попадать в случай 3 (третий случай и случай для значения 3), когда он должен попасть в случай 4 (еще раз четвертый случай, а также случай для значения 4)