class反编译出现goto如何解决?

afeng999 2013-01-05 10:07:39
代码如下:
		public String perform()
{
result.append("\n ");
goto _L1
_L7:
token = tokens.nextToken();
lcToken = token.toLowerCase();
if (!"'".equals(token)) goto _L3; else goto _L2
_L2:
String t = tokens.nextToken();
this.token += t;
if (!"'".equals(t) && tokens.hasMoreTokens()) goto _L2; else goto _L4
_L3:
if (!"\"".equals(token)) goto _L4; else goto _L5
_L5:
t = tokens.nextToken();
this.token += t;
if (!"\"".equals(t)) goto _L5; else goto _L4
_L4:
if (afterByOrSetOrFromOrSelect && ",".equals(token))
commaAfterByOrFromOrSelect();
else
if (afterOn && ",".equals(token))
commaAfterOn();
else
if ("(".equals(token))
openParen();
else
if (")".equals(token))
closeParen();
else
if (BasicFormatterImpl.BEGIN_CLAUSES.contains(lcToken))
beginNewClause();
else
if (BasicFormatterImpl.END_CLAUSES.contains(lcToken))
endNewClause();
else
if ("select".equals(lcToken))
select();
else
if (BasicFormatterImpl.DML.contains(lcToken))
updateOrInsertOrDelete();
else
if ("values".equals(lcToken))
values();
else
if ("on".equals(lcToken))
on();
else
if (afterBetween && lcToken.equals("and"))
{
misc();
afterBetween = false;
} else
if (BasicFormatterImpl.LOGICAL.contains(lcToken))
logical();
else
if (isWhitespace(token))
white();
else
misc();
if (!isWhitespace(token))
lastToken = lcToken;
_L1:
if (tokens.hasMoreTokens()) goto _L7; else goto _L6
_L6:
return result.toString();
}
...全文
268 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
afeng999 2013-01-05
  • 打赏
  • 举报
回复
result.append( initial );

			while ( tokens.hasMoreTokens() ) {
				token = tokens.nextToken();
				lcToken = token.toLowerCase();

				if ( "'".equals( token ) ) {
					String t;
					do {
						t = tokens.nextToken();
						token += t;
					}
					while ( !"'".equals( t ) && tokens.hasMoreTokens() ); // cannot handle single quotes
				}
				else if ( "\"".equals( token ) ) {
					String t;
					do {
						t = tokens.nextToken();
						token += t;
					}
					while ( !"\"".equals( t ) );
				}

				if ( afterByOrSetOrFromOrSelect && ",".equals( token ) ) {
					commaAfterByOrFromOrSelect();
				}
				else if ( afterOn && ",".equals( token ) ) {
					commaAfterOn();
				}

				else if ( "(".equals( token ) ) {
					openParen();
				}
				else if ( ")".equals( token ) ) {
					closeParen();
				}

				else if ( BEGIN_CLAUSES.contains( lcToken ) ) {
					beginNewClause();
				}

				else if ( END_CLAUSES.contains( lcToken ) ) {
					endNewClause();
				}

				else if ( "select".equals( lcToken ) ) {
					select();
				}

				else if ( DML.contains( lcToken ) ) {
					updateOrInsertOrDelete();
				}

				else if ( "values".equals( lcToken ) ) {
					values();
				}

				else if ( "on".equals( lcToken ) ) {
					on();
				}

				else if ( afterBetween && lcToken.equals( "and" ) ) {
					misc();
					afterBetween = false;
				}

				else if ( LOGICAL.contains( lcToken ) ) {
					logical();
				}

				else if ( isWhitespace( token ) ) {
					white();
				}

				else {
					misc();
				}

				if ( !isWhitespace( token ) ) {
					lastToken = lcToken;
				}

			}
			return result.toString();
为啥呢 2013-01-05
  • 打赏
  • 举报
回复
印象中java是支持goto的,只是不建议使用。 不要的话改成条件或循环语句就可以了

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧