首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >提交JDT CompilationUnit上的更改

提交JDT CompilationUnit上的更改
EN

Stack Overflow用户
提问于 2016-01-21 04:00:11
回答 1查看 180关注 0票数 2

你好,伙计们

我正在尝试为eclipse创建插件以生成一些代码,并且我一直在尝试使用JDT操作源代码

下面是一个例子

代码语言:javascript
复制
        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中使用提交方法,但是它已经被弃用了,你能建议其他方法吗?

EN

回答 1

Stack Overflow用户

发布于 2016-01-21 04:56:39

好的,多亏了bodo的评论,我想出了这个办法

代码语言:javascript
复制
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);
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34909384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档