Заказчик дал мне какой-то древний неподдерживаемый код стороннего поставщика в jar-файле, и я пытаюсь его перепроектировать, чтобы заново реализовать тот же протокол, который использовался для подключения к серверу.
Я декомпилировал его, и в одном из классов, похоже, есть метки и операторы goto.Мой компилятор выбрасывает это, потому что, насколько я понимаю, goto не поддерживается в Java.
Я не могу опубликовать весь код из-за проблем с IP, но вот суть (яЯ добавил ошибки компилятора в комментарии):
private void methodName(InputType input)
throws ConfigurationException
{
// initialization code here
_L2:
String x; // The compiler is complaining that "String cannot be resolved to a variable" here
String y; // This line is fine though...
// Some Code here
x = <SOME VALUE> // Compiler complains about "x cannot be resolved to a variable"
y = <ANOTHER VALUE> // Compiler is fine with this.
// Some more code
if(true) goto _L2; else goto _L1 // Multiple issues here see following lines.
// Syntax error on token "goto", throw expected
// _L2 cannot be resolved to a variable
// Syntax error on token "goto", { expected
// Syntax error on token "goto", { expected
_L1: // Syntax error on token "goto", { expected
local; // local cannot be resolved to a variable
// Some more code
JVM INSTR ret 12; // Multiple issues here see following lines.
// JVM INSTR ret 12;
// Syntax error on token "ret", = expected
return;
}
Я понимаю, что строки, за которыми следует двоеточие, являются метками, но я не понимаю, что здесь происходит не так.
В строке с символом goto проверяется true , поэтому я могу просто удалить метки, поскольку они здесь неактуальны, но я не понимаю, что означает эта строка:
local;
Или это:
JVM INSTR ret 12;
Любая помощь, интерпретирующая это, будет наиболее ценной.