JDT – 尝试更改Type的超类。 我不知道超级class的合格名称

我有一个程序,除了其他任务之外,还必须使用JDT更改某些类的超类。 我有两个字符串,其中包含要交换的超类的限定名称,例如“org.example.John”和“org.example.Smith”,我正在解析整个AST搜索扩展这些类的类。

当我试图找出超类的限定名称时,我的问题就出现了。 我找不到办法。 给定一个ICompilationUnit (表示一个类),我使用一个ASTVisitor来解析TypeDeclaration,如下面的方法所示。

 public boolean visit(TypeDeclaration typeDeclaration) { TypeDeclaration[] types = typeDeclaration.getTypes(); superClass = typeDeclaration.getSuperclassType(); superClass.getNodeType(); Class nodeType = ASTNode.nodeClassForType(superClass.getNodeType()); if (newSuperClass != null) { Name oldName = typeDeclaration.getAST().newName(oldSuperClass); SimpleType oldType = typeDeclaration.getAST().newSimpleType(oldName); Name newName = typeDeclaration.getAST().newName(newSuperClass); SimpleType newType = typeDeclaration.getAST().newSimpleType(newName); if (superClass != null && superClass.equals(oldType)) { typeDeclaration.setSuperclassType(newType); } } return true; } 

据我所知,Eclipse能够在超类声明(例如public class MySubClass extends John )之间建立连接,并将其映射到import org.example.John定义的实际Type(例如import org.example.John )。 我正在寻找一种像Eclipse那样做的方法。

可能的替代解决方案是任何可以帮助我使用JDT更改类的超类的解决方案,给定纯文本限定名称。