2
我在查看jstl 1.1.2的一些代码时遇到了一些不熟悉的Java语法。它发生在我看到的代码是由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());
}
这是奇怪的语法只是反向编译的人工产物,还是像返回语句之后的有意义的代码那样的东西?
感谢,
Rebeccah
这个肯定是反编译的情况!在同一级别的函数中不能有多个返回。 –
第二次返回无法到达。我假设前线;也是无用的。它应该给出一个编译错误,但你可以强制运行,它会正常工作,但第二次返回是无法访问的。 –