java反汇编组件中包含方法头的字符串

ki0zmccv  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(265)

有没有办法解析一个包含如下方法头的字符串:

public static int calculate(int a, int b)

进入组件
访问修饰符(public、protected、private)
非访问修饰符(静态、抽象)
返回类型
方法名称
参数列表
还是我必须自己编程?

f2uvfpb9

f2uvfpb91#

您可以使用javaparser库来提取这些信息。与maven:

<dependency>
    <groupId>com.github.javaparser</groupId>
    <artifactId>javaparser-core</artifactId>
    <version>${javaparser.version}</version>
</dependency>

然后,声明一个解析器示例和要解析的主体。请注意,您必须在输入后加后缀 {} 以符合有效的方法声明。

JavaParser parser = new JavaParser();

String body = "public static int calculate(int a, int b){}";
ParseResult<BodyDeclaration<?>> result = parser.parseBodyDeclaration(body);
if (result.isSuccessful()) {
    BodyDeclaration<?> bodyDeclaration = result.getResult().get();
}

然后,验证它是否是要应用向下转换的方法声明 MethodDeclaration . 最后,您可以提取必要的信息。

if (bodyDeclaration.isMethodDeclaration()) {
    MethodDeclaration method = (MethodDeclaration) bodyDeclaration;

    // [public, static]
    NodeList<Modifier> modifiers = method.getModifiers();
    // int
    Type type = method.getType();
    // calculate
    SimpleName name = method.getName();
    // [int a, int b]
    NodeList<Parameter> parameters = method.getParameters();
}

相关问题