Я столкнулся с каким-то незнакомым синтаксисом Java, глядя на некоторый код из jstl 1.1.2. Мне кажется, что код, на который я смотрю, был обратным, скомпилированным Beyond Compare (или его плагином), так что это может иметь какое-то отношение к нему.Объявление объекта Java после возврата ;?
код в конце метода выглядит следующим образом:
...
p.parse(page.getInputStream(), h);
if(failed)
return vmFromString("taglib " + prefix + " (" + uri + ") allows only the " +
"following taglibs to be imported: " + permittedTaglibs);
return null;
SaxException ex;
ex;
return vmFromString(ex.toString());
ex;
return vmFromString(ex.toString());
ex;
return vmFromString(ex.toString());
}
В JSTL 1.1, прежде чем они переработан в PermittedTaglibsHandler, это выглядит следующим образом:
...
saxparser.parse(pagedata.getInputStream(), permittedtaglibshandler);
if(failed)
return vmFromString("taglib " + s+ " (" + s1+ ") allows only the " +
"following taglibs to be imported: " + permittedTaglibs);
return null;
Object obj;
obj;
return vmFromString(((SaxException) (obj)).toString());
obj;
return vmFromString(((ParserConfigurationException) (obj)).toString());
obj;
return vmFromString(((IOException) (obj)).toString());
}
Является ли этот странный синтаксис просто артефакт обратной компиляции, или есть такая вещь, как значимый код, который следует за оператором return?
Спасибо,
Rebeccah
это обязательно в случае обратного компиляции! Вы не можете иметь несколько возвратов в функции на том же уровне. –
Второе возвращение недостижима. Я предполагаю, что строка ex; тоже бесполезно. Он должен дать ошибку компиляции, но вы можете принудительно запустить, и он будет работать правильно, но второй возврат недостижим. –