2017-06-12 1 views
0

Je suis un peu novice dans la programmation javac et je veux créer une expression JCEc pour donner des valeurs d'annotation. J'ai cherché partout mais pas de chance.Comment créer une nouvelle expression JCE pour donner des valeurs d'annotation

c'est ce que j'ai essayé jusqu'à présent

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; 
    } 
} 

s'il vous plaît aidez-moi !!!

Répondre

1

trouvé la solution moi-même

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> 
    } 
    }); 
} 
}