Android - 如何使用标签语句
Android - How to use labeled statements
我正在做一个项目,我对其他项目的代码进行了逆向工程。但是,代码包含如此多的 goto
语句和一个 label
。
我尝试根据使用的标签重新排列代码,但没有得到正确的输出。我知道这可能超出了你们的范围,因为你们不知道代码。
我的问题是关于如何使用 Android 中的标记语句,因为我找不到任何具体代码或演示示例。
下面是我正在处理的代码片段。
public static String computeIMEI()
{
String s1 = ((TelephonyManager)getInstance().getSystemService("phone")).getDeviceId();
if (s1 != null) goto _L2; else goto _L1
_L1:
String s = "not available";
_L4:
Log.d("IMEI", (new StringBuilder()).append("got deviceID='").append(s).append("'").toString());
return s;
_L2:
s = s1;
if (s1.equals("000000000000000"))
{
s = "1971b8df0a9dccfd";
}
if (true) goto _L4; else goto _L3
_L3:
}
非常感谢您的帮助,谢谢。
天哪!你在哪里得到它? :)
通常没有人使用 goto
语句。代码很难阅读和理解。
if (s1 != null) goto _L2; else goto _L1
很明显。如果 s1 等于 null,我们转到 _L1 标签,然后从方法转到 _L4 和 return。
如果 s1 不等于 null,我们转到 _L2 标签,然后再次转到 _L4(if (true) goto _L4; else goto _L3
,否则永远不会执行分支)和 return 从方法。
您的 "translated" 形式的代码:
public static String computeIMEI() {
String s1 = ((TelephonyManager)getInstance().getSystemService("phone")).getDeviceId();
if (s1 != null) {
s = s1;
if (s1.equals("000000000000000")) {
s = "1971b8df0a9dccfd";
}
} else {
String s = "not available";
}
Log.d("IMEI", (new StringBuilder()).append("got deviceID='").append(s).append("'").toString());
return s;
}
我正在做一个项目,我对其他项目的代码进行了逆向工程。但是,代码包含如此多的 goto
语句和一个 label
。
我尝试根据使用的标签重新排列代码,但没有得到正确的输出。我知道这可能超出了你们的范围,因为你们不知道代码。
我的问题是关于如何使用 Android 中的标记语句,因为我找不到任何具体代码或演示示例。
下面是我正在处理的代码片段。
public static String computeIMEI()
{
String s1 = ((TelephonyManager)getInstance().getSystemService("phone")).getDeviceId();
if (s1 != null) goto _L2; else goto _L1
_L1:
String s = "not available";
_L4:
Log.d("IMEI", (new StringBuilder()).append("got deviceID='").append(s).append("'").toString());
return s;
_L2:
s = s1;
if (s1.equals("000000000000000"))
{
s = "1971b8df0a9dccfd";
}
if (true) goto _L4; else goto _L3
_L3:
}
非常感谢您的帮助,谢谢。
天哪!你在哪里得到它? :)
通常没有人使用 goto
语句。代码很难阅读和理解。
if (s1 != null) goto _L2; else goto _L1
很明显。如果 s1 等于 null,我们转到 _L1 标签,然后从方法转到 _L4 和 return。
如果 s1 不等于 null,我们转到 _L2 标签,然后再次转到 _L4(if (true) goto _L4; else goto _L3
,否则永远不会执行分支)和 return 从方法。
您的 "translated" 形式的代码:
public static String computeIMEI() {
String s1 = ((TelephonyManager)getInstance().getSystemService("phone")).getDeviceId();
if (s1 != null) {
s = s1;
if (s1.equals("000000000000000")) {
s = "1971b8df0a9dccfd";
}
} else {
String s = "not available";
}
Log.d("IMEI", (new StringBuilder()).append("got deviceID='").append(s).append("'").toString());
return s;
}