Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JDT-尝试更改类型的超类。我不知道';我不知道超类的限定名_Java_Eclipse_Eclipse Jdt - Fatal编程技术网

Java JDT-尝试更改类型的超类。我不知道';我不知道超类的限定名

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

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

当我试图找出超类的限定名时,问题就出现了。我就是找不到办法。给定一个
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的类的超类(给定纯文本限定名)的方法