Java JDT-尝试更改类型的超类。我不知道';我不知道超类的限定名
我有一个程序,在其他任务中,必须使用JDT更改某些类的超类。我有两个字符串,带有要交换的超类的限定名称,例如“org.example.John”和“org.example.Smith”,我正在解析整个AST搜索扩展这些类的类 当我试图找出超类的限定名时,问题就出现了。我就是找不到办法。给定一个Java JDT-尝试更改类型的超类。我不知道';我不知道超类的限定名,java,eclipse,eclipse-jdt,Java,Eclipse,Eclipse Jdt,我有一个程序,在其他任务中,必须使用JDT更改某些类的超类。我有两个字符串,带有要交换的超类的限定名称,例如“org.example.John”和“org.example.Smith”,我正在解析整个AST搜索扩展这些类的类 当我试图找出超类的限定名时,问题就出现了。我就是找不到办法。给定一个ICompilationUnit(表示一个类),我使用一个ASTVisitor来解析类型声明,如下方法所示 public boolean visit(TypeDeclaration typeDeclarat
ICompilationUnit
(表示一个类),我使用一个ASTVisitor来解析类型声明,如下方法所示
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能够在超类声明(例如,公共类MySubClass extensed John
)之间建立连接,并将其映射到导入中定义的实际类型(例如,import org.example.John
)。我正在寻找一种与Eclipse相同的方法
可能的替代解决方案是任何可以帮助我更改使用JDT的类的超类(给定纯文本限定名)的方法