eclipse emf-创建EObject时,自动生成特性值的最佳方式是什么



我的EClasses中有一些属性,我想在创建实例时初始化为计算值。我想知道使用该框架的推荐方法是什么

在一种情况下,我想将id属性初始化为UUID。在这种情况下,我希望在第一次创建对象时分配UUID值,然后在对象的生命周期内保持不变。

在另一种情况下,我想生成一个只需要在模型实例中唯一的短id。

我是EMF的新手,非常感谢任何指导。

在这两种情况下,我通常将属性设为suppress Setter,并在默认构造函数中初始化它们。

  • UUID是通过EcoreUtils.generateUUID()生成的
  • 类唯一id是从类静态CCD_ 3生成的

属性是而不是生成的unchangeable,因为我们必须(通常)能够加载XML文件,并且这些属性必须优先于构造函数中设置的属性。

类唯一id稍微更难处理,因为在应用程序启动时,我们还必须将nextID初始化为一个好值。

考虑一下我们首先创建多个对象,然后加载一个旧文件的顺序:我们如何确保对象之间没有重复?一种可能的方法是将id分为两部分:时间戳和序列号。假设我们不能在时间戳的分辨率内(通常是一秒钟)重新启动应用程序,那么这就没问题了。

这个解决方案仍然假设我们永远不需要加载两个或多个旧文件,因为如果在不同的应用程序实例中同时创建,这些文件可能会冲突。。。。

总而言之,我通常坚持使用UUID,因为这种方法避免了所有上述问题:-)

相关内容

最新更新