Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 解析方法签名字符串_Java - Fatal编程技术网

Java 解析方法签名字符串

Java 解析方法签名字符串,java,Java,我试图编写一个代码,将方法签名作为字符串输入,然后从中提取信息,如返回类型、修饰符、方法名称、参数类型、参数名称、异常 有很多方法可以编写方法签名,我希望我的代码能够处理所有这些方法。所以我对自己写这本书持怀疑态度 由于Java语法,Java理解它。我在中找到了这个类签名器 sun.reflect.generics.parser(源代码:) 我被卡住了,无法使用它,但是我需要你的帮助。以下是我到目前为止所做的尝试(它在一开始就给出了一个错误) 为了找出问题所在,我试着把它分解。但我什么都想不出来

我试图编写一个代码,将方法签名作为字符串输入,然后从中提取信息,如返回类型、修饰符、方法名称、参数类型、参数名称、异常

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

由于Java语法,Java理解它。我在中找到了这个类签名器 sun.reflect.generics.parser(源代码:)

我被卡住了,无法使用它,但是我需要你的帮助。以下是我到目前为止所做的尝试(它在一开始就给出了一个错误)

为了找出问题所在,我试着把它分解。但我什么都想不出来


此外,这种解析方式只给我留下方法类型,而不是方法名称。我必须手动编写代码,还是有人能推荐一些库方法?

首先,您的方法应该在运行的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();
...

在javadoc实用程序中可能有一些方法,它们已经在解析代码和拆分方法部分。感谢您的快速回复。正如您所说,您的解释中的代码适用于运行JVM中的类。它从该类中定义的方法中提取信息。我的问题是,我从用户那里获取方法签名的输入(并将其存储在字符串中)。那么,我如何从那里得到你的解决方案呢?有一个丢失的链接我无法找到…没有任何东西可以阻止您从方法签名解析类名和函数名:))不不不。我的意思是。。。想象一下这个文本区域。用户在这里输入“public static void main(String[]args)。我接受它。将它存储在
String methodd=new String(“public static void main(String[]args)
”)中。从这里开始我该怎么办?您建议的解决方案解析我类中的方法…例如,这是我的类:
public class MethodSpy{String methodd;public static methodparser(String methodd){//method body}
因此您的解决方案将解析此方法-
public static methodparser(String methodd)
我想解析
字符串方法d
是的,这没有回答问题。@Nikhil有一个方法签名,他想从中获取参数和返回类型。
Method yourMethod = null;
if (metods[i].getName().equals("yourmethodname")){
    yourMethod = methods[i];
}
yourMethod.getParameterTypes();
yourMethod.getReturnType();
...