You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何清除Xtend中create方法的内部缓存?(Xtext模型转换场景)

清除Xtend create方法内部缓存的实现方案

1. 清理Xtext ResourceSet级缓存

若你的create方法依赖Xtext的ResourceSet加载或转换模型,ResourceSet会缓存已加载的资源与模型实例。清除方式有两种:

  • 直接重新创建ResourceSet,原有缓存会被垃圾回收:
val resourceSet = new XtextResourceSet()
  • 手动卸载并清空现有ResourceSet中的资源:
resourceSet.resources.forEach[ resource |
    resource.unload()
]
resourceSet.resources.clear()

2. 自定义工厂方法的缓存清除

如果你的create方法是自定义的工厂方法(比如带@Factory注解)且自行实现了缓存逻辑,需显式添加缓存清理方法:

class MyModelFactory {
    private val cache = Maps.newHashMap<String, MyModel>()

    def create(String key) {
        cache.getIfAbsentPut(key, [
            // 模型实例创建逻辑
            new MyModel()
        ])
    }

    // 新增缓存清除方法
    def clearCache() {
        cache.clear()
    }
}

调用时直接执行clearCache()即可清空内部缓存。

3. Xtend生成器缓存处理

若create方法涉及Xtext代码生成环节的缓存,可通过两种方式处理:

  • 在生成器中禁用缓存:
class MyGenerator extends AbstractGenerator {
    override void doGenerate(Resource resource, IFileSystemAccess2 fsa, IGeneratorContext context) {
        // 关闭生成缓存,强制重新生成
        context.setCancelable(false)
        fsa.setDeleteSourceFolder(true)
        // 生成逻辑代码...
    }
}
  • 手动删除生成目标目录下的所有文件,彻底清理旧缓存。

4. Eclipse IDE环境下的缓存清理

如果是在Eclipse中开发,还需清理IDE层面的缓存:

  • 右键目标项目 → Refresh,刷新资源同步状态
  • 通过菜单栏Project → Clean...选择对应项目,清理构建缓存

内容的提问来源于stack exchange,提问作者R4de

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 09:51:06