0
我使用eclipse jdt以编程方式折叠类的层次结构(1.将所有方法和字段移动到父类,2. remove abstract keyword如果父类是抽象的,和3参考父类,而不是一个孩子在所有系统) 我完成步骤1,2,但我有问题,与3
这里是我的代码:删除一个类与现有类型后,在eclipse jdt中替换未解决的类型
//update the references to the parent class
IPackageFragment classChangedPackage = rootpackage.getPackageFragment("net.sourceforge.ganttproject");
ICompilationUnit ClassChangedCU = classChangedPackage.getCompilationUnit("GanttProject" + ".java");
ASTParser parserClassChanged = ASTParser.newParser(AST.JLS8);
parserClassChanged.setSource(ClassChangedCU);
parserClassChanged.setKind(ASTParser.K_COMPILATION_UNIT);
parserClassChanged.setResolveBindings(true); // we need bindings later on
final CompilationUnit cuClassChanged = (CompilationUnit) parserClassChanged.createAST(null);
cuClassChanged.recordModifications();
rewrite = ASTRewrite.create(cuClassChanged.getAST());
TypeDeclaration typeDeclClassChanged = (TypeDeclaration) cuClassChanged.types().get(0);
cuClassChanged.accept(new CHtypeVisitor(rewrite,classSourceName,typeDeclClassChanged));
Document doc= new Document(typeDeclClassChanged.toString());
TextEdit edits = rewrite.rewriteAST(doc, null);
try {
edits.apply(doc);
} catch (MalformedTreeException e) {
e.printStackTrace();
} catch (BadLocationException e) {
e.printStackTrace();
}
ClassChangedCU.getBuffer().setContents(doc.get());
我的访客代码:
但是,即使用像int这样的原语替换也是行不通的。
我想要的是以编程方式应用类似eclipse quickfix(jdt CorrectionEngine)的未解析类型,它提供了我想要替换的类型(子类)和替换类(子类)作为参数。
什么是行不通的? –
它不会通过int原语替换子类型 –
您是否看到访客与预期节点和名称匹配?重写器是否产生任何文本编辑?是否抛出任何异常?文档的结果内容是否正确? –