Enums 在自定义doclet中处理某些5.0语言功能(枚举和注释)的问题

Enums 在自定义doclet中处理某些5.0语言功能(枚举和注释)的问题,enums,annotations,javadoc,doclet,Enums,Annotations,Javadoc,Doclet,我正在使用JDK1.7编写一个全新的定制doclet。到目前为止,我发现了以下问题: 文档方法isAnnotationType(),isAnnotationTypeElement(),isEnum()和isEnumConstant()不起作用。它们总是返回错误 PackageDoc方法enums()不起作用。它总是返回一个空数组enum包含在方法allClasses()和ordinaryClasses()的结果中 ClassDoc方法enumConstants()不起作用。它总是返回一个空数组E

我正在使用JDK1.7编写一个全新的定制doclet。到目前为止,我发现了以下问题:

文档方法
isAnnotationType()
isAnnotationTypeElement()
isEnum()
isEnumConstant()
不起作用。它们总是返回错误

PackageDoc
方法
enums()
不起作用。它总是返回一个空数组
enum
包含在方法
allClasses()
ordinaryClasses()
的结果中

ClassDoc
方法
enumConstants()
不起作用。它总是返回一个空数组
Enum
常量包含在方法
fields()
的结果中

PackageDoc
方法
annotationTypes()
不起作用。它总是返回一个空数组<方法
interfaces()
的结果中包含了代码>注释,因此我可以实现以下解决方法:

AnnotationTypeDoc annotationDoc;
ClassDoc[] interfaces = packageDoc.interfaces();
for (ClassDoc classDoc : interfaces) {
if (classDoc instanceof AnnotationTypeDoc) {
    annotationDoc = (AnnotationTypeDoc) classDoc;
} else {
    continue;
}
process(annotationDoc);
}
根据我在“JavaDoc5.0中的新功能”页面()中发现的一些东西,我猜,即使我是用JDK1.7编写的,我的doclet仍在某种5.0之前的兼容模式下工作。这是我在“Javadoc 5.0的新增功能”页面中发现的内容:

与自定义Doclet不兼容

在5.0之前编写的自定义Doclet在5.0中使用新语言功能的源文件上运行时会出现兼容性问题。 新的语言特性:修改了DocletAPI和标准Doclet,以处理新的5.0语言特性——泛型、枚举、变量和注释。 要处理这些特性,还需要修改自定义Doclet。 Javadoc工具尝试——尽可能地——提供所谓的“遗留”doclet,其中包含 1) 继续使用5.0之前的源代码,以及 2) 符合他们对5.0源代码的期望。
因此,例如,类型参数和类型参数从泛型构造中剥离,类型变量和通配符类型替换为它们的擦除,ClassDoc.fields()将返回枚举常量。

已解决!它实际上是在5.0之前的兼容模式下工作的。我所要做的就是将以下方法添加到我的自定义doclet中:

public static LanguageVersion languageVersion() {
    return LanguageVersion.JAVA_1_5;
}

非常感谢。这是一个巨大的难题。我真希望enum接口实际上是一个接口(或抽象类),而不是静态方法的集合。