java - 以编程方式将 Xtend 类设置为 Java 类的父类(super class)

标签 java eclipse eclipse-plugin eclipse-jdt xtend

我目前正在开发 Eclipse 插件。我想以编程方式将 Xtend 类设置为 Java 类的父类(super class)。 如果这两个类都是 Java 类,我将使用 JDT API 来完成此操作。问题是我无法通过 Java AST 或 Java 模型访问 Xtend 类。

这是我尝试访问 Xtend 类的方法:

  • 使用 ASTParser
  • 使用IJavaProject.findType()

有没有办法将 Xtend 类设置为父类(super class)? 有没有办法使用字符串(包+类名)设置父类(super class),而不引用 ITypeTypeDeclaration

编辑: Java 类和 Xtend 类都已存在。

最佳答案

如果您已经知道父类(super class)的限定名称,则不需要通过 AST 或 Java 模型访问它,只需名称就足够了。

当您谈到设置 Java 类的父类(super class)时,不清楚该类 (a) 是从头开始创建还是 (b) 存在并正在被修改。这两种情况仍然可以使用公共(public) AST 来执行(在 (a) 的情况下,只需创建 AST 并使用 ASTFlattener 对其进行序列化;在 (b) 的情况下,您应该使用 ASTRewrite ).

无论哪种方式,您要使用的 API 都是 TypeDeclaration.setSuperclassType(Type) ,其中参数可能是 SimpleTypeQualifiedName 构建:

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/

相关文章:

java - 使用 Maven 构建 Eclipse 插件 - 最新观点

类型为 T 的 Java 参数化 JUnit

java - E/SQLite数据库 : Error inserting with SQLiteConstraintException

apache-flex - 在 Flex Builder 项目中哪些文件应该进入源代码管理?

java - @SuppressWarnings ("hiding") 在 eclipse 中的目的是什么?

java - 如何在 Eclipse Swing 项目中使用 JavaFX

java - Eclipse 编辑器插件 : "ERROR" when opening file outside project

java - 按照 Google App Engine 教程创建 Web 应用程序项目

java - 安卓应用程序未安装

java - Singleton DAO 实例在 HTTP 事务之间保留旧的关闭 session