作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在编写扩展 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/
我是一名优秀的程序员,十分优秀!