你好,伙计们
我正在尝试为eclipse创建插件以生成一些代码,并且我一直在尝试使用JDT操作源代码
下面是一个例子
final ASTParser parser = ASTParser.newParser(AST.JLS8);
parser.setKind(ASTParser.K_COMPILATION_UNIT);
parser.setSource(copy);
parser.setResolveBindings(true);
ASTNode node = parser.createAST(null);
CompilationUnit unit = (CompilationUnit) parser.createAST(null);
AST ast = unit.getAST();
MethodDeclaration declaration = ast.newMethodDeclaration();
declaration.setName(ast.newSimpleName("test"));
TypeDeclaration typeDeclaration = ( TypeDeclaration )unit.types().get( 0 );
typeDeclaration.bodyDeclarations().add(declaration);类之前

(运行上述代码后根据CompilationUnit的toString() )

显然,方法声明已经像我想要的那样创建了,但是我不知道如何将这样的更改提交到底层resource.The中,我发现唯一的方法是在ICompilationUnit中使用提交方法,但是它已经被弃用了,你能建议其他方法吗?
发布于 2016-01-21 04:56:39
好的,多亏了bodo的评论,我想出了这个办法
private void saveChanges(ICompilationUnit copy, CompilationUnit unit)
throws JavaModelException, MalformedTreeException, BadLocationException {
Document document= new Document(copy.getBuffer().getContents());
TextEdit edits = unit.rewrite(document, copy.getJavaProject().getOptions(true));
edits.apply(document);
copy.getBuffer().setContents(document.get());
copy.save(null, false);
}https://stackoverflow.com/questions/34909384
复制相似问题