如何清除Xtend中创建方法的缓存

问题描述 投票:0回答:1

我正在使用创建方法(Xtend doc)来执行 Xtext 中语言的模型转换。我需要清除创建方法的内部缓存,如何实现?

xtext xtend
1个回答
0
投票

获取干净缓存的正确方法是创建包含 create 方法的类型的新实例。

在进行模型转换时,包含 create 方法的类通常是单例。如果这里也是这种情况,我建议使用作用域依赖注入(例如自定义 Guice 作用域)或这些类的提供程序,在适当的时候返回新实例。


也就是说,可以清除创建缓存。但这看起来有点像黑客,因为您需要访问生成的属性,而您实际上不应该直接使用这些属性。

如果您有一个名为

createElement
的创建方法,那么 Xtend 将生成一个名为
_createCache_createElement
、类型为
HashMap
的私有属性。该属性可通过 Xtend 代码访问。因此,要清除缓存,您可以调用:

_createCache_createElement.clear()

如果您有多个同名的 create 方法,请小心:它将生成

_createCache_createElement_1
_createCache_createElement_2
等属性。您必须检查哪个映射属于哪个创建方法。我想如果方法签名发生变化,数字也可能会发生变化,所以在这种情况下我会避免访问地图。如果您使用 Eclipse,您可以在编辑器中右键单击,然后“打开生成的文件”来检查 Xtend 生成的内容。

© www.soinside.com 2019 - 2024. All rights reserved.