获取Java中方法的@param注释

获取Java中方法的@param注释,java,parsing,Java,Parsing,有没有办法在Java中获取方法的@param注释?我知道通过解析每个java文件可以很容易地实现。然而,这似乎应该已经在JavaCC这样的工具中可用 示例-我希望能够阅读ch和observer: * @param ch the character to be tested * @param observer the image observer to be notified 您是指javadoc注释中的@param吗?Javac(或者你真的是说JavaCC,java编译器?)忽

有没有办法在Java中获取方法的@param注释?我知道通过解析每个java文件可以很容易地实现。然而,这似乎应该已经在JavaCC这样的工具中可用

示例-我希望能够阅读ch和observer:

* @param ch        the character to be tested
* @param observer  the image observer to be notified

您是指javadoc注释中的@param吗?Javac(或者你真的是说JavaCC,java编译器?)忽略它们,因为它们只是注释。 您可以使用javadoc工具,即使在内存可用的情况下,也可以编写自己的doclet


或者您指的是方法注释?如果在注释声明中将retention设置为runtime,则可以在java代码中检索这些内容。

您是指javadoc注释中的@param吗?Javac(或者你真的是说JavaCC,java编译器?)忽略它们,因为它们只是注释。 您可以使用javadoc工具,即使在内存可用的情况下,也可以编写自己的doclet


或者您指的是方法注释?如果保留在注解声明中设置为运行时,则可以在java代码中检索这些文件。

如果您有这些源,您可能会考虑使用它描述为一个高速、小脚印分析器,用于从JavaDoc @标签中完成源文件中的类/接口/方法定义。它设计用于活动代码生成器或文档工具

示例代码:


如果您有这些源,您可能会考虑使用它描述为一个高速、小脚印分析器,用于从JavaDoc @标签完成源文件中提取类/接口/方法定义。它设计用于活动代码生成器或文档工具

示例代码:

简短的回答是“否”:在运行时无法访问注释,因为注释未编译到
.class
文件中

您可以使用各种方法解析源代码(如果可用),但这似乎与您的问题无关。

简短的回答是“否”:在运行时无法访问注释,因为注释未编译到
.class
文件中


您可以使用各种方法解析源代码(如果可用的话),但这似乎与您的问题无关。

好的,javadoc的东西,但我的回答是,恐怕您无法从标准java类文件中获得。如果它们是用调试信息编译的,您可以使用类(字节码)检查工具/库从类文件中获取它们。因此,确实需要解析java源文件,但javadoc doclet可以为您或一些奇特的regexp进行解析。Javac忽略注释,javadoc基本上是花哨的注释。我不确定我是否可以在Java中的另一个类中运行doclet-该死!好的,javadoc的东西,但我的回答是,恐怕你不能从标准的java类文件中得到它。如果它们是用调试信息编译的,您可以使用类(字节码)检查工具/库从类文件中获取它们。因此,确实需要解析java源文件,但javadoc doclet可以为您或一些奇特的regexp进行解析。Javac忽略注释,javadoc基本上是花哨的注释。我不确定我是否可以在Java中的另一个类中运行doclet-该死!
JavaMethod mth = cls.getMethods()[0];

// Access the JavaDoc comment
String comment = mth.getComment();
  // "This method does nothing at all."

// Access a single doclet tag
DocletTag returns = mth.getTagByName("returns");
returns.getName(); // "returns";
returns.getValue(); // "A boolean of whether we care or not."

// Access multiple doclet tags with the same name
DocletTag[] params = mth.getTagsByName("param");
params[0].getValue(); // "Someone's email address."
params[1].getValue(); // "Date of birth."

// Access specific parameters of a doclet tag by index
DocletTag permission = mth.getTagByName("permission");
permission.getParameter[0]; // "administrator"
permission.getParameter[1]; // "full-access"

// Access specific parameters of a doclet tag by name
DocletTag webservice = mth.getTagByName("webservice");
webservice.getNamedParameter("type"); // "rpc"
webservice.getNamedParameter("name"); // "myservice"