我正在创建一个ECore模型。我创建了一个EClass,在其中我想创建一个列表的数据成员。所以我创建了一个EEList类型的EAttribute。
然而,当我尝试创建genmodel文件时,我收到错误消息
属性“XYZ.Attribute_name”不是瞬态的,它必须具有可序列化的数据类型。
它还会发出警告
与'EEList'分类器关联的泛型类型应该有1种类型的atrgument(s)来匹配分类器的类型参数的数量。
谁能告诉我我做错了什么?我无法弄清楚如何在E
中设置EEList<E>
。
答案 0 :(得分:0)
在您修复第二个错误后,第一个错误可能会消失。我在这里写了一个解释,但你可能不必处理它来解决你的问题。
因为要保存到磁盘,属性的EDataTypes必须可以转换为文本格式。
有两种方法可以确保这一点:
Serializable
接口并提供序列化操作。许多标准Java类,例如String
和Integer
已经这样做了。另一种解决方案是将属性的 Transient 属性设置为 true 。该属性不会被保存,其EDataType也不需要序列化。
创建列表属性的常规方法是将属性的上限属性设置为不同于1的值。要创建可包含任意数量元素的列表属性,请设置< em> Upper Bound 为-1,表示 Unbounded 。
EAttribute Type 应设置为元素类型,而不是列表类型。
生成的Java代码将包含类型为EList<ElementType>
的属性。