gpt4 book ai didi

java - 解析字符串中的方法定义作为方法名称

转载 作者:行者123 更新时间:2023-12-01 12:42:50 24 4
gpt4 key购买 nike

我使用反射来动态获取类信息,特别是它们的方法定义。以下是我将获得的方法定义的一些示例,

    "public final native void java.lang.Object.wait(long) throws java.lang.InterruptedException"
...
"public final native java.lang.Class<?> java.lang.Object.getClass()"

正如您所看到的,它们都是唯一的,有些有异常(exception)、参数等。解析每个字符串并获取方法名称的最佳方法是什么?

我的想法是,我可以找到字符 (,然后回溯,直到第一个空格将新字符串从该空间保存到 ( 字符。

我会遇到此解决方案的问题吗?还是有更简单、更优雅的方法来实现我想要的目标?

更新:

每个方法声明都包含在单独的字符串中。这是一个字符串问题而不是反射问题,我只提到了反射,所以你知道我是如何动态获取这些信息的。我需要做的就是解析字符串中的方法名称。

最佳答案

你的带括号的解决方案是好的(如果你真的得到String,而不是java.lang.reflect.Method),我建议使用正则表达式来编写代码:

Pattern p = Pattern.compile("([^.]*)\\s*\\(");
Matcher m = p.match(str);
if (m.find()) {
String methodName = m.group(1);
//...
}

顺便说一句,我不明白为什么要解析String:你从哪里得到它?在反射中获取方法的最常见方法是:

Class<?> clazz = ...
Method[] methods = clazz.getMethods();
// processing methods
for (Method method : methods) {
// processing concrete method
// for example, getting the name
String name = method.getName();
}

关于java - 解析字符串中的方法定义作为方法名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24936699/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com