分类: Java
2011-02-08 19:21:05
EClassifier是EClass和EDataType的超类,而且ETypedElement通过eType指向了EClassifier,那么
从ETypedElement衍生的类都将能得到Eclassifier的一个实例。
我们来看看有那些类是衍生于ETypedElement,EAttribute,EReference,EOperation,EParameter四个类。
这四个类都有类型的。所以都将通过eType得到类型。即EClassifier实例。
再来看看EClassifier的属性,它继承于ENamedElement,所以当然可以指定name属性了,除此以外:
instanceClassName : java class名
instanceClass :根据instanceClassName,classload后,生成的class实例。
defaultValue :类型的默认值,Int,Long等就是0。这跟instanceClassName相关联的。
isInstance方法是判断一个Java Object是否不为NULL并且是一个EClass的实例或是EDataType(作为EClassifier类型)。如果是EClass实例,那么依次调用超类的isInstance来判断。
如果是EDataType,那么直接调用类的isInstance方法,比如是Int型,那么直接调用Integer.class.isInstance()。
而每个EClassifier在实例化时,EMF package都会指定一个唯一的ID。