java - 如何使用 java 检测和 ASM 知道该方法是否是静态的

标签 java instrumentation

我正在使用 java 工具和 ASM 来操作 java 字节码。 我如何知道函数是否是静态的?

我尝试使用 Modifier.isStatic 但无法在仪器内运行它。 我可以使用 ASM 函数知道这一点吗?

我需要它来获取函数参数。如果函数不是静态的,则 this 对象位于堆栈的索引 0 中

最佳答案

编写您自己的类访问者,然后覆盖“visitMethod”

  @Override
    public MethodVisitor visitMethod(int access, String name, String desc,
                                     String signature, String[] exceptions) 
    {
        // for a single flag bit, test against zero is sufficient
        boolean isStatic = (access & Opcodes.ACC_STATIC) != 0;
        // do something else
    }

关于java - 如何使用 java 检测和 ASM 知道该方法是否是静态的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19228984/

相关文章:

java - JSP 不访问超过一页的静态内容

java - 未捕获或未抛出预期异常?

java 。类重定义的限制

c - 在检测图像上运行功能测试用例时,不会生成 gcda 文件

java - 如何从 Eclipse 网络设置访问动态代理?

java - 在 Android OnClickListener 匿名类中使用循环索引创建 ImageButtons 网格

java - 如何在 MyBatis 中使用 UUID 类型处理程序和 @Many 注释?

java - 加载某些类时不会调用 ClassFileTransformer.transform()

android - UiAutomator 2.0 命令行测试

java - ASM - 拦截外部方法的字段访问