有没有办法获取 Java 中方法的 @param 注释?我知道它可以通过解析每个 java 文件来轻松实现。然而,这似乎应该已经在像 JavaCC 这样的工具中可用。
示例 - 我希望能够阅读 ch 和观察者:
* @param ch the character to be tested
* @param observer the image observer to be notified
如果您有源代码,您可能想考虑使用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"
您指的是 javadoc 注释中的 @param 吗?Javac(或者您真的是指 JavaCC 编译器编译器?)忽略它们,因为它们只是注释。不过,您可以使用 javadoc 工具,即使现在有记忆,也可以编写自己的 doclet。
还是您指的是方法注释?如果在注解声明中将保留设置为运行时,则可以在 java 代码中检索这些内容。
简短的回答是“否”:在运行时无法访问注释,因为注释没有编译到.class
文件中。
您可以使用各种方法解析源(如果可用),但这似乎与您的问题无关。