Доброго времени суток!
Столкнулся с проблемой при работе с JavaParser.
Имеется код:
private void editLocalField() throws IOException {
CompilationUnit cu = JavaParser.parse(classFile.getFile());
new EditLocalFieldVisitor().visit(cu, null);
System.out.println(cu);
classFile.writeFile(cu.toString());
}
private class EditLocalFieldVisitor extends VoidVisitorAdapter<Void> {
@Override
public void visit(FieldDeclaration n, Void arg) {
if(n.getVariable(0).getName().asString().equals(oldFieldName)){
n.getVariable(0).setName(newFieldName);
}
}
}
Соответственно в файле classFile.getFile() хранится код:
public class Test extends AbstractProcessCommand {
/*comment*/
private String test;}
В этом случае все работает и поле меняет свое имя. Но если код в файле:
public class Test extends AbstractProcessCommand {
/*comment*/
private String test;
test = "some Text";}
То здесь уже выскакивает ошибка:
Caused by: com.github.javaparser.ParseProblemException: (line 13,col 2) Parse error. Found "=", expected one of "enum" "exports" "module" "open" "opens" "provides" "requires" "strictfp" "to" "transitive" "uses" "with" <IDENTIFIER>
Т.е. javaParser не может обработать присвоение.
Как быть? По сути необходимо в данном контексте поменять имя поля везде, где оно встречается в классе. Заранее благодарен!
Продвижение своими сайтами как стратегия роста и независимости