gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 01:03:10 32 4
gpt4 key购买 nike

我正在使用 JDK 1.7 编写一个全新的自定义 doclet。这些是我目前发现的问题:

文档方法 isAnnotationType() , isAnnotationTypeElement() , isEnum()isEnumConstant()不工作。他们总是返回false。
PackageDoc方法 enums()不起作用。它总是返回一个空数组。 Enums包含在方法的结果中 allClasses()ordinaryClasses() .
ClassDoc方法 enumConstants()不起作用。它总是返回一个空数组。 Enum常量包含在方法 fields() 的结果中.
PackageDoc方法 annotationTypes()不起作用。它总是返回一个空数组。 Annotations包含在方法 interfaces() 的结果中,所以我可以实现以下解决方法:

AnnotationTypeDoc annotationDoc;
ClassDoc[] interfaces = packageDoc.interfaces();
for (ClassDoc classDoc : interfaces) {
if (classDoc instanceof AnnotationTypeDoc) {
annotationDoc = (AnnotationTypeDoc) classDoc;
} else {
continue;
}
process(annotationDoc);
}

根据我在“Javadoc 5.0 的新增功能”页面 ( http://docs.oracle.com/javase/7/docs/technotes/guides/javadoc/whatsnew-1.5.0.html ) 中找到的内容,我猜测,即使我使用 JDK 1.7 编写它,我的 doclet 也在某种 5.0 之前的兼容模式下工作。这是我在“Javadoc 5.0 的新增功能”页面中找到的内容:

与自定义 Doclet 不兼容

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

最佳答案

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

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

关于enums - 在自定义 doclet 中处理某些 5.0 语言功能(枚举和注释)的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21220943/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com