JDK 1.7 を使用して新しいカスタム ドックレットを作成しています。これまでに発見した問題は次のとおりです。
Doc メソッドisAnnotationType()
、isAnnotationTypeElement()
、isEnum()
およびisEnumConstant()
は機能しません。それらは常に false を返します。
PackageDoc
メソッドenums()
は機能しません。常に空の配列を返します。Enums
メソッドallClasses()
およびの結果に含まれordinaryClasses()
ます。
ClassDoc
メソッドenumConstants()
は機能しません。常に空の配列を返します。Enum
定数は method の結果に含まれfields()
ます。
PackageDoc
メソッドannotationTypes()
は機能しません。常に空の配列を返します。Annotations
method の結果に含まれているため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 で書いているにもかかわらず、私のドックレットはある種の 5.0 より前の互換モードで動作しています。これは、「Javadoc 5.0 の新機能」ページで見つけたものです。
カスタムドックレットとの非互換性
5.0 より前に作成されたカスタム ドックレットは、5.0 の新しい言語機能を使用するソース ファイルで実行すると、互換性の問題が発生します。新しい言語機能: ドックレット API と標準ドックレットが改訂され、新しい 5.0 言語機能 (ジェネリック、列挙型、変数引数、および注釈) を処理できるようになりました。これらの機能を処理するには、カスタム ドックレットも修正する必要があります。Javadoc ツールは、可能な範囲で、1) 5.0 より前のソース コードで引き続き動作し、2) 5.0 ソース コードに対する期待に一致するプログラムのビューで、いわゆる「レガシー」ドックレットを提示しようとします。 . したがって、たとえば、型パラメーターと型引数はジェネリック コンストラクトから取り除かれ、型変数とワイルドカード型は消去によって置き換えられ、ClassDoc.fields() は列挙定数を返します。