免责声明:我只是一名低级受训人员,所以如果我犯了一些基本错误,请原谅我:(
我正在编写一个自动API生成器,这些类需要JavaDoc以及注释,因为API中包含的某些值不应该写在JavaDoc中(例如exampleResponse)。
但是,似乎单个方法上面的注释替换了Javadoc,所以当我想从JavaDoc中获取描述时(我想这样做,我不必在注释中再次写入),我有一个问题。
使用getJavadoc()始终返回null。我还尝试使用getOrphanComments(),但它返回null。我误解了文档吗?我假设如果我在一个方法上面写了两条评论,那么最上面的一条将转移到该方法的orphanComments。
有什么方法可以解决这个问题吗?
答案 0 :(得分:0)
让MethodDeclaration
对象为method
你可以使用
if( method.hasComment() && method.getComment() instanceof JavadocComment ){
JavadocComment javaDoc = (JavadocComment)method.getComment();
// now you can get the content using
String content = javaDoc.getContent();
}
答案 1 :(得分:0)
对于以下类型:
public final String name;
public final String signature;
public final String returnType;
public final Type returnFullType; // com.github.javaparser.ast.type.Type
public final String body;
public final String[] modifiers;
public final String[] parameterNames;
public final String[] parameterTypes;
public final Type[] parameterFullTypes; // com.github.javaparser.ast.type.Type
public final String[] exceptions;
public final String jdComment;
public final MethodDeclaration nativeJP_API_reference; // com.github.javaparser.ast.body.MethodDeclaration
这是我自己的混合物Method
类的构造函数:
Method (MethodDeclaration md)
{
NodeList<Modifier> ml = md.getModifiers();
NodeList<Parameter> pl = md.getParameters();
NodeList<ReferenceType> te = md.getThrownExceptions();
this.nativeJP_API_reference = md;
this.name = md.getNameAsString();
this.signature = md.getDeclarationAsString();
this.returnType = md.getType().toString();
this.returnFullType = md.getType();
this.body = md.getBody().isPresent() ? md.getBody().get().toString() : null; // In ConstructorDeclaration, this is an Optional<BlockStmt>, not here!
this.modifiers = new String[ml.size()];
this.parameterNames = new String[pl.size()];
this.parameterTypes = new String[pl.size()];
this.parameterFullTypes = new com.github.javaparser.ast.type.Type[pl.size()];
this.exceptions = new String[te.size()];
this.jdComment = md.hasJavaDocComment() ? md.getJavadocComment().get().toString() : null;
int i = 0;
for (Parameter p : pl)
{
parameterNames[i] = p.getName().toString();
parameterTypes[i] = p.getType().toString();
parameterFullTypes[i] = p.getType();
i++;
}
i = 0;
for (Modifier m : ml) modifiers[i++] = m.toString();
i = 0;
for (ReferenceType r : te) exceptions[i++] = r.toString();;
}