我正在使用带有Java6+的可插拔注释处理api自动创建一些部署XML文件。这些XML文件的一部分包含对象的描述。描述始终是与类本身关联的Javadoc相同的内容。我可以强制注释成为@Block注释的一个字段,但这会复制信息。在批注处理过程中,有没有办法获取类/类型注释的内容?
在本例中,我希望在批注处理期间获得“我的块的一个不错的描述”。
/**
* A nice description of my block
**/
@Block
public class CustomBlock {
}发布于 2011-10-29 01:18:51
我似乎总是在我发了这样的帖子之后就能找到答案。
以下是解决方案,以供将来参考
import java.util.Set;
import javax.annotation.processing.AbstractProcessor;
import javax.annotation.processing.RoundEnvironment;
import javax.lang.model.element.TypeElement;
public class CustomAnnotationProcessor extends AbstractProcessor
{
@Override
public boolean process(Set<? extends TypeElement> set, RoundEnvironment re)
{
// use the protected member, processingEnv
String comment = processingEnv.getElementUtils().getDocComment(anyElement);
}
}发布于 2011-10-29 01:13:29
有一个听起来应该返回注释的getDocComment。
更新:它被移到了elements utitlity上。
发布于 2011-10-29 01:18:51
批注处理应用编程接口使用javax.lang.model(.*)包中的类。这些模型语言构造和所述模型必须在编译期间生成。由于编译器的目的是忽略注释和文档,所以这些包中似乎没有任何东西可以让您访问注释/文档。
我不确定javadoc工具是如何执行它的工作的,也许这会有所帮助。
Kapep的答案看起来很有趣,但请注意,它使用的是特定于实现的com.sun.*包中的内容。除非您完全确定为注解处理器环境提供的资源是使用这些类实现的,并且可以从接口安全地向下转换,否则最好不要使用这些类。这充其量只是一个脆弱的解决方案。
编辑:顺便说一句,我还使用自定义注释+处理器来生成XML格式的元数据,用于布线、验证等。我还需要描述。因此,我所做的就是保留JavaDoc,用于编程目的和一些可能会让直接在代码中使用类的人感兴趣的细节,同时在注释中包含一些描述码(如果没有给出,则基于类名/其他注释值的默认值),可以用来从某个资源文件中获取描述。该描述是针对“最终用户”的,并侧重于高级内容,而不是代码细节。它还有促进国际化的额外好处。我不确定这对你有什么用处,但这是我的两点意见。
https://stackoverflow.com/questions/7932336
复制相似问题