gpt4 book ai didi

java - Doclet- 获取列表的泛型

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:01:18 24 4
gpt4 key购买 nike

我正在编写扩展 com.sun.javadoc.Doclet 的 doclet。

当我想将 ArrayList 记录为方法的字段时,我想获取泛型的类型(例如,在记录 ArrayList<String> 时,我想获得的信息是这是一个包含字符串的列表)。

我只能得到信息,这是一个 ArrayList。即使在打电话时

ParameterizedType paramType = fieldType.asParameterizedType();

我只得到 java.util.ArrayList 而不是泛型的类型。

有人知道如何获取列表的通用类型吗?

示例代码如下:

FieldDoc[] fields = classDoc.fields();
for (int k = 0; k < fields.length; k++) {
Type fieldType = fields[k].type();
if (fieldType.asParameterizedType() != null) {
ParameterizedType paramType = fieldType.asParameterizedType();
String qualiName = paramType.qualifiedTypeName(); // this equals "java.util.ArrayList"
fieldType.asParameterizedType().toString(); // this equals "java.util.ArrayList"
fieldType.asParameterizedType().typeName(); // this equals "ArrayList"
}
}

最佳答案

在 Java 1.6 下编写自定义 doclet 时,我遇到了泛型在类型上丢失的问题。我能够通过将以下方法添加到我的 doclet 来修复它。


/**
* NOTE: Without this method present and returning LanguageVersion.JAVA_1_5,
* Javadoc will not process generics because it assumes LanguageVersion.JAVA_1_1
* @return language version (hard coded to LanguageVersion.JAVA_1_5)
*/
public static LanguageVersion languageVersion() {
return LanguageVersion.JAVA_1_5;
}

关于java - Doclet- 获取列表的泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5731619/

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