java - XTEND - 资源管理

标签 java eclipse code-generation xtext xtend

我有一个关于 Xtend 的非常具体的问题。

在我读到的有关 xText/xTend 的每个示例中,我都会看到类似这样的内容:

override void doGenerate(Resource resource, IFileSystemAccess fsa) {
 for(e: resource.allContents.toIterable.filter(typeof(Entity))) {
   fsa.generateFile(
   e.fullyQualifiedName.toString("/") + ".java",
   e.compile)
 }
}

好吧,更具体一点resource.allContents.toIterable.filter(typeof(Entity))) 是给我带来问题的一个。我想知道如何在没有实体子类的情况下从所有实体沿着资源树向下查找。方法过滤器获取资源中类型实体及其子类的所有对象,但我只想忽略子类并只获取实体。

最佳答案

请尝试以下表达式:

allContents.toIterable.filter(typeof(Entity)).filter[ getClass == typeof(Entity) ]

第一个过滤器表达式在您所描述的意义上是类型安全的(它返回一个 Iterable,而第二个过滤器表达式确保您不会产生任何子类型。

如果您使用 EMF,这不会产生任何结果,因为 Entity 是一个接口(interface),具体类将类似于 EntityImpl。在这种情况下,我建议使用 EMF API 来过滤所有“真实”实体:

allContents.toIterable
  .filter(typeof(Entity))
  .filter[ eClass == MyEPackage$Literals::ENTITY ]

关于java - XTEND - 资源管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13251362/

相关文章:

android - 在 IDE 外部使用 Gradle 构建 APK(从 Ant 迁移)

javascript - 用于生成 JavaScript 代码的 Java 库

java - 编辑 "Test for Existing Class"的 Netbeans 模板

java - 如何使用IntelliJ IDE将媒体资源正确地添加到(Java)Gradle工件中?

java - Spring 事务传播和乐观锁定的问题

java - Eclipse Android 透视图

eclipse - Egit安装路径错误

java - 在 Eclipse 中生成 java 代码?

java - Struts2 token 拦截器 : CSRF protection

java - JButton 可以工作,但在单击时不会显示我的图标