解析方法签名字符串

时间:2014-01-06 09:01:36

标签: java

我正在尝试编写一个代码,将方法签名作为String输入,然后从中提取信息,如 - 返回类型,修饰符,方法名称,参数类型,参数名称,异常。

有很多方法可以编写方法签名,我希望我的代码能够处理所有这些方法。所以我对自己写这篇文章持怀疑态度。

Java理解它,这要归功于java语法。我发现了这个类SignatureParser sun.reflect.generics.parser(来源:http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/sun/reflect/generics/parser/SignatureParser.java

我被困住了,无法使用它,但需要你的帮助。这是我到目前为止所尝试的内容(它在开头就给出了错误)

MethodTypeSignature mts = SignatureParser.make().parseMethodSig(method);

为了弄清楚出了什么问题,我试图将其分解。但我无法弄明白。

另外,这种解析方式给我留下了方法类型而不是方法名称。我是否必须手动编写代码,或者有人可以建议一些库方法吗?

1 个答案:

答案 0 :(得分:-2)

首先,您的方法应该在运行的jvm中的类下定义。 然后你会得到关于这个类的信息。

Class cls = Class.forName("yourclassname");

之后,您可以使用此方法获取该功能的信息。

Method[] metods = cls.getMethods();

您可以遍历这些方法找到您感兴趣的方法,并使用大量有用的函数来提取getParameterTypes或getExeptionTypes等信息......

Method yourMethod = null;
if (metods[i].getName().equals("yourmethodname")){
    yourMethod = methods[i];
}
yourMethod.getParameterTypes();
yourMethod.getReturnType();
...

http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Method.html