我正在尝试编写一个代码,将方法签名作为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);
为了弄清楚出了什么问题,我试图将其分解。但我无法弄明白。
另外,这种解析方式给我留下了方法类型而不是方法名称。我是否必须手动编写代码,或者有人可以建议一些库方法吗?
答案 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