2017-06-12 105 views
0

我对javac编程有点新,我想创建一个JCExpression来给注解值。我搜索了每一个地方,但没有运气。如何创建一个新的JCExpression来给出注释值

这是我到目前为止已经试过

if (templates.size() > 0) { 
List <JCTree.JCAnnotation> annotations = templates; 

for (JCTree.JCAnnotation jcAnnotation: annotations) { 
    JCTree.JCExpression jcExpression = new JCTree.JCExpression() { 
    @Override public Tag getTag() { 
    return null; 
    } 

    @Override public void accept(Visitor visitor) { 

    } 

    @Override public < R, D > R accept(TreeVisitor < R, D > treeVisitor, D d) { 
    return null; 
    } 

    @Override public Kind getKind() { 
    return null; 
    } 
    }; 

    List <JCTree.JCExpression> jcExpressions = jcAnnotation.getArguments(); 

    for (JCTree.JCExpression jcExpression1: jcExpressions) { 
    jcExpression1 = jcExpression; 
    } 
} 

请帮帮我!

回答

1

找到了解决自己

for (JCTree.JCAnnotation annotation: templates) { 
List <JCTree.JCExpression> expressionList = annotation.args; 
for (JCTree.JCExpression expression: expressionList) { 

    expression.accept(new TreeTranslator() { 
    @Override public void visitLiteral(JCTree.JCLiteral jcLiteral) { 
    super.visitLiteral(jcLiteral); 
    JCTree.JCLiteral val = treeMaker.Literal("<custom value>"); 
    jcLiteral.value = val.value; 
    } 

    @Override public void visitIdent(JCTree.JCIdent jcIdent) { 
    super.visitIdent(jcIdent); 
    <track the parameters> 
    } 
    }); 
} 
} 
相关问题