0

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

示例 - 我希望能够阅读 ch 和观察者:

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

3 回答 3

3

如果您有源代码,您可能想考虑使用QDox,它被描述为一种高速、占用空间小的解析器,用于从带有 JavaDoc @tags 的源文件中提取类/接口/方法定义。它旨在供活动代码生成器或文档工具使用。

文档中的示例代码:

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"
于 2012-05-01T23:44:49.253 回答
1

您指的是 javadoc 注释中的 @param 吗?Javac(或者您真的是指 JavaCC 编译器编译器?)忽略它们,因为它们只是注释。不过,您可以使用 javadoc 工具,即使现在有记忆,也可以编写自己的 doclet。

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

于 2012-05-01T23:06:00.380 回答
1

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

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

于 2012-05-02T00:03:37.960 回答