我正在使用带有Java6 +的可插入注释处理api来自动创建一些部署XML文件。这些XML文件的一部分包含对象的描述。描述始终与与类本身关联的Javadoc具有相同的内容。我可以强制注释成为@Block注释的一个字段,但这会复制信息。在注释处理过程中是否有任何方法可以获取类/类型注释的内容?
在这个例子中,我希望在注释处理期间得到“我的块的一个很好的描述”。
/**
* A nice description of my block
**/
@Block
public class CustomBlock {
}
答案 0 :(得分:15)
在我发布SO之后,我似乎总能找到答案。
供将来参考,这是解决方案
public class CustomAnnotationProcessor extends AbstractAnnotationProcessor
{
public boolean process(...)
{
// use the protected member, processingEnv
String comment = processingEnv.getElementUtils().getDocComment(anyElement);
}
}
答案 1 :(得分:0)
getDocComment听起来应该返回评论。
更新:已移至elements utitlity。
答案 2 :(得分:0)
注释处理API使用javax.lang.model(.*)
包中的类。必须在编译期间生成这些模型语言构造和所述模型。由于编译器旨在忽略注释和文档,因此这些包中似乎没有任何内容,也没有预期,这使您可以访问comments / doc。
我不确定javadoc工具如何执行其工作,也许这可能有所帮助。
Kapep的答案看起来很有趣,但请注意它使用com.sun.*
包中的内容,这是特定于实现的。除非您完全确定为您的annotatation处理器环境提供的资源是使用这些类实现的,并且您可以安全地从接口转发,所以最好不要使用它。它充其量只是一种脆弱的解决方案。