我目前正在开发 Eclipse 插件。我想以编程方式将 Xtend 类设置为 Java 类的父类(super class)。 如果这两个类都是 Java 类,我将使用 JDT API 来完成此操作。问题是我无法通过 Java AST 或 Java 模型访问 Xtend 类。
这是我尝试访问 Xtend 类的方法:
- 使用
ASTParser
- 使用
IJavaProject.findType()
有没有办法将 Xtend 类设置为父类(super class)?
有没有办法使用字符串(包+类名)设置父类(super class),而不引用 IType
或 TypeDeclaration
?
编辑: Java 类和 Xtend 类都已存在。
最佳答案
如果您已经知道父类(super class)的限定名称,则不需要通过 AST 或 Java 模型访问它,只需名称就足够了。
当您谈到设置 Java 类的父类(super class)时,不清楚该类 (a) 是从头开始创建还是 (b) 存在并正在被修改。这两种情况仍然可以使用公共(public) AST 来执行(在 (a) 的情况下,只需创建 AST 并使用 ASTFlattener
对其进行序列化;在 (b) 的情况下,您应该使用 ASTRewrite
).
无论哪种方式,您要使用的 API 都是 TypeDeclaration.setSuperclassType(Type)
,其中参数可能是 SimpleType
由 QualifiedName
构建:
void setSuperClass(TypeDeclaration typeDecl, String qualifiedName) {
AST ast = typeDecl.getAST();
Name name = ast.newName(qualifiedName);
Type type = ast.newSimpleType(name);
typeDecl.setSuperclassType(type);
}
关于java - 以编程方式将 Xtend 类设置为 Java 类的父类(super class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42189523/