WEB开发网
开发学院软件开发Java 基于反射机制的 EMF 模型比较 阅读

基于反射机制的 EMF 模型比较

 2010-07-06 00:00:00 来源:WEB开发网   
核心提示: 图 2. EObject 接口图 2 所示为 EObject 接口,其中 EMF 提供的反射方法有 eGet(),基于反射机制的 EMF 模型比较(3),eSet(),eUnset() 和 eIsSet(),EMF 代码生成工具会为建模模型生成 EPackage 的子接口,由这个接口的静态变量

图 2. EObject 接口
基于反射机制的 EMF 模型比较

图 2 所示为 EObject 接口,其中 EMF 提供的反射方法有 eGet(),eSet(),eUnset() 和 eIsSet(),由于 EObject 接口是所有 EMF 建模类型必须实现的接口,所以所有 EMF 对象都可以使用反射 API 方法,这是本文阐述的实现比较 EMF 对象解决方案的基石。对这五个反射方法的解释如下:

Object eGet(EStructuralFeature)方法将返回 EStructuralFeature 表示属性的值,等同于调用 Object eGet(EStructuralFeature,true) 方法。

Object eGet(EStructuralFeature,boolean)方法的 boolean 参数用来指定是否在返回之前解析并加载代理(Proxies)的引用对象。关于 EMF 的代理 (Proxy) 请参阅参考文档扩展阅读。

eSet(EStructuralFeature,Object)方法将参数中的 Object 对象设置为指定属性的新值。

eIsSet(EStructuralFeature)方法返回一个布尔值表示一个属性是否已经被设置值。

eUnSet(EStructuralFeature)方法可以用来重置或取消一个属性的值。

用 EMF 反射实现对象按字段值比较

本章阐述如何得到 EStructuralFeature 对象,并通过 EMF 对象的反射方法读取字段的值。对于取得的值,区别其是简单类型还是组合类型,之后分别进行比较。

运用反射 API 读取对象的字段值

本文用 EObject 对象的 eGet(EStructuralFeature) 方法读取 EObject 对象的值。首先,需要得到该方法的参数 EstructuralFeature。EMF 将模型类型的字段相关描述信息集中放置到实现 EPackage 接口的类内部。EMF 代码生成工具会为建模模型生成 EPackage 的子接口,由这个接口的静态变量 eINSTANCE 得到它的实例,将其作为 eGet 方法的参数即可得到相应的值。代码如清单 1 所示:

上一页  1 2 3 4 5 6 7 8  下一页

Tags:基于 反射 机制

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接