java - 如何计算方法描述符的参数数量?

标签 java jvm

我想知道给出 Chapter 4 The class file Format - Section 4.3.3 中指定的方法描述符的方法的参数数量。是否有任何内置函数提供此实用程序?

最佳答案

我不知道内置方法,但偶尔我会实现一个。

private static Pattern allParamsPattern = Pattern.compile("(\\(.*?\\))");
private static Pattern paramsPattern = Pattern.compile("(\\[?)(C|Z|S|I|J|F|D|(:?L[^;]+;))");


int getMethodParamCount(String methodRefType) {
    Matcher m = allParamsPattern.matcher(methodRefType);
    if (!m.find()) {
        throw new IllegalArgumentException("Method signature does not contain parameters");
    }
    String paramsDescriptor = m.group(1);
    Matcher mParam = paramsPattern.matcher(paramsDescriptor);

    int count = 0;
    while (mParam.find()) {
        count++;
    }
    return count;
}

欢迎您引用完整源码here .

关于java - 如何计算方法描述符的参数数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11087404/

相关文章:

jvm - 如何从 Activity 进程中卸载 JVM?

java - 更改 DOM4J 文档 : UTF to ISO-8859-1 (Java) 的编码

java - 服务层主数据验证

javascript - 在 Spring Boot 中将 Angular 环境变量传递给编译的静态 Angular 文件

jvm - "Out of Memory!"- 启动从 native 包安装的 SonarQube 时在 Debian 8 上出错

java - 来源和行为兼容性

java - 我的 xml 代码中有一个错误,导致所有应用程序停止

java - JMenuItem 的工具提示

java - Java字节码中的jsr_w和宽指令有什么区别?

java - 为什么不能在方法中采用多个可变参数参数?