我正在玩Doclets,我遇到了下一个问题。我想从类中获取属性,我认为参数方法会有所帮助。我的代码看起来像下一个(我正在为方法的返回类型执行此操作):
ClassDoc retType = pMethod.returnType().asClassDoc();
if(retType == null) {
System.out.println("No returnType for method " + pMethod.name());
return false;
} else {
System.out.println("returnType for method "
+ pMethod.name() + " is from type " + pMethod.returnType().typeName());
}
FieldDoc[] fields = retType.fields();
System.out.println("fields length for type " +
retType.name() + " is " + fields.length);
我得到的是
方法myMethod的returnType来自类型 MyMethodResponse
fields length for type MyMethodResponse is 0
也许我错过了什么。 ClassDoc.fields()方法不会为我带来所有属性列表吗?有没有办法做到这一点?非常感谢你。
答案 0 :(得分:2)
好的,在网上搜索,我没有找到很多解释/例子。有一个网页:use doclet to extract class, field, method information from java source code,为了提取属性,他们在下一个方法中使用ClassDoc.fields()方法:
FieldDoc[] fields=classDoc.fields(false);
以这种方式使用它,我得到了我想要的所有属性,因为我正在禁用默认启用的访问修饰符过滤器。 在API中,来自fields方法的boolean参数用于在调用javaDoc(-public,-protected,-package和-private)时使用enable / dissable声明的访问修饰符过滤器。因此,如果我们只想获取该类的所有属性,我们需要禁用它将其设置为false。