【问题标题】:how to get JVM INSTR tableswitch into the code?如何让 JVM INSTR tableswitch 进入代码?
【发布时间】:2014-02-17 19:36:30
【问题描述】:

“goto”中出现语法错误,并出现另一个错误(_L 无法解析为变量)。我想保留“goto”,但是如何更正代码?

代码:

public static ArrayList getTemplateList(Context context) {
    XArraySharedObject xarraysharedobject = getArraySharedObject(context);
    if (xarraysharedobject.size() != 0) {
        goto _L2; 
    } else {
        goto _L1
    }

    _L1:
        int i = 0;
    _L5:
        if (i < DEFAULT_TEMPLATES.length) goto _L3; else goto _L2
    _L2:
        return xarraysharedobject.getArrayList();
    _L3:
        xarraysharedobject.add(DEFAULT_TEMPLATES[i]);
        i++;
        if (true) goto _L5; else goto _L4
    _L4:
}

【问题讨论】:

  • 是什么让您想到可以在 Java 代码中使用“goto”?
  • 获得更好的反编译器。或者了解字节码操作的实际含义。这是非常基本的东西。
  • 实际上,这里有某种 for、do 或 while 循环。盯着代码几分钟会发现是哪一个。一旦你把剩下的 _L# 片段整理出来,就可以插入内联。

标签: java android eclipse arraylist jvm


【解决方案1】:

GOTO 是面向对象开发的宿敌,在 Java 代码中没有位置。相反,您应该创建在每种情况下调用的方法或使用

  switch (thing to check) {
       case 1:
           //do action 1
           break;
       case 2:
           //do action 2
           break;
  }

如果您不熟悉该语言,您应该花一些时间学习 Android 教程和/或学习该语言 - Java

【讨论】:

    猜你喜欢
    • 2012-05-04
    • 2017-03-09
    • 2010-12-30
    • 2023-04-04
    • 2018-10-15
    • 2019-08-27
    • 1970-01-01
    • 1970-01-01
    • 2021-07-01
    相关资源
    最近更新 更多