分类: Java
2011-02-08 19:06:21
1. EClass :类在ECore中处于中心位置。一个Eclass可以包含多个EReference和EAttribute。通过取得
eAllStructuralFeatures,就可以取得所有的EReference和EAttribute,
2. EStructuralFeature :类EReference和EAttribute都继承于EStructuralFeature。定义一些他们共通的属性。
3. ETypeElement : 类EStructuralFeature 的超类。也定义一些共通的成员变量。
4. EClassifier :类ETypeElement 通过eType指定一个EClassifier。
ETypeElement的属性(成员变量)描述如下
1. ordered :属性值是否有顺序。只有在multiplicity-many的时候有意义。
2. unique :属性值是否唯一。 只有在multiplicity-many的时候有意义。
3. lowerBound : 属性值在Object中最少个数
4. upperBound :属性值在Object中最多个数
5. many :属性值是否是多个
6. required :属性是否必须被设置
EStructuralFeature的属性(成员变量)描述如下
1. changeable :属性值是否可以被设置
2. volatile :属性值是否直接进行存储。
3. transient : 属性值在Object进行序列化时是否忽略
4. defaultValueLiteral :
5. defaultValue :默认值
6. unsettable :指定一个属性是否可以unset。指定为true时,属性将有设置和未设置两种状态。通过unset方法
可以转到未设置状态。当然属性值也将被设为默认值。
7. derived :指定一个属性的值是否由其他相关数据计算得出的。
EStructuralFeature 是一个Eclass的结构性的描述,即包含EAttribute也包含EReference。
一个EClass通过eAllStructuralFeatures描述所有的EAttribute和EReference。
而EStructuralFeature继承于ETypedElement,这个类描述,一个属性EAttribute或者包含的类EReference的多少,是否必须等特性。EStructuralFeature通过eType来描述EAttribute或者EReference的类型,eType的类型是EClassifier。
前一篇文章里说过
EAttribute 通过eAttributeType 来描述EAttribute 的类型, eAttributeType 的类型是EDataType
EReference通过eReferenceType来描述EReference的类型, eReferenceType的类型是Eclass
EAttribute 和EReference的直接超类EStructuralFeature为什么还需要eType呢,当通过eAllStructuralFeatures得到
一个EStructuralFeature实例,这时还不知道是EAttribute,还是Ereference,所以通过这个eType就可以得到类型了。
所以得到得类型必然是EDataType和Eclass的共同超类。所以EDataType和Eclass都继承于EClassifier。
一个EStructuralFeature包含于一个Eclass里,所以通过eContainingClass可以取得容器类(EClass)。
EClass里的方法如下
EList
EList
同时还提供了根据featureID和featureName取得StructuralFeature的方法
EStructuralFeature getEStructuralFeature(int featureID);
EStructuralFeature getEStructuralFeature(String featureName)