繁体   English   中英

Pluggable Annotation Processor API可以检索源代码注释吗?

[英]Can the Pluggable Annotation Processor API retrieve source code comments?

我正在使用带有Java6 +的可插入注释处理api来自动创建一些部署XML文件。 这些XML文件的一部分包含对象的描述。 描述始终与与类本身关联的Javadoc具有相同的内容。 我可以强制注释成为@Block注释的一个字段,但这会复制信息。 在注释处理过程中是否有任何方法可以获取类/类型注释的内容?

在这个例子中,我希望在注释处理期间得到“我的块的一个很好的描述”。

/**
* A nice description of my block
**/
@Block
public class CustomBlock {
}

在我发布SO之后,我似乎总能找到答案。

为了将来参考,这是解决方案

public class CustomAnnotationProcessor extends AbstractAnnotationProcessor
{
    public boolean process(...)
    {

        // use the protected member, processingEnv

        String comment = processingEnv.getElementUtils().getDocComment(anyElement);


    }
}

getDocComment听起来应该返回评论。

更新:它被移动到元素utitlity

注释处理API使用javax.lang.model(.*)包中的类。 必须在编译期间生成这些模型语言构造和所述模型。 由于编译器旨在忽略注释和文档,因此这些包中似乎没有任何内容,我也没有预期,这使您可以访问comments / doc。

我不确定javadoc工具如何执行其工作,也许这可能有所帮助。

Kapep的答案看起来很有趣,但请注意它使用来自com.sun.*包的东西,这是特定于实现的。 除非您完全确定为您的annotatation处理器环境提供的资源是使用这些类实现的,并且您可以安全地从接口转发,所以最好不要使用它。 它充其量只是一个脆弱的解决方案。

编辑:除此之外,我还使用自定义注释+处理器生成XML格式的元数据,用于布线,验证等。我还需要描述。 所以我所做的就是保留JavaDoc用于编程目的和可能对直接在代码中使用类的人感兴趣的细节,同时在注释中有一些描述键(或者如果没有给出,则默认基于类名/其他注释值) )可用于从某个资源文件中获取描述。 该描述适用于“最终用户”,并侧重于高级别的东西,而不是代码细节。 它具有促进国际化的额外好处。 我不确定这对你有什么用处,但是我的两分钱。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM