Xtext Xtype:JvmType和JvmTypeReference有什么区别?

时间:2014-01-22 10:51:10

标签: java xtext

Xtype语法包含两种引用Java类型的方法:JvmTypeJvmTypeReference

我不明白:

  • 为什么有两个;
  • 他们是如何不同的;
  • 我应该使用哪个。

2 个答案:

答案 0 :(得分:2)

从我使用Eclipse的Java AST开始工作时,它远程响铃。有关深度如何处理Java文件的选项有两种选择:

  • 只是解析;
  • 类型绑定。

使用类型绑定时,您可以访问所引用的实际Java 类型;没有它你只需要一个类型引用,这相当于一个解析的Java名称。

答案 1 :(得分:2)

JvmType是关于Java类型(声明)的EMF视图。它的子类型表示Java中的不同类型,例如类和接口(JvmGenericType),枚举(JvmEnum)和注释类型(JvmAnnotationType)或基本类型({{1} })。

JvmPrimitiveType是对声明类型的引用。它的交叉引用类型指向JvmTypeReference,但它可以具有其他属性,例如类型参数(JvmType)。 Java 8会将JvmParameterizedTypeReferece称为“类型使用”。其大多数子类具有更多技术性质,例如在类型推理期间表示部分解决类型的阶段。

由于数组与Java的类型系统硬连接,JvmTypeReference继承自JvmArrayType而不是特定的JvmType