基于反射机制的EMF模型比较 - 编程入门网
anceof 操作符首先区分出列表类型,然后再区分出组 合数据类型,余下的作为简单数据类型处理。区分 EList 是因为它是一种集合 数据类型,需要进行遍历其中元素。比较 EList 的方法将在第 3.4 节中详细叙 述。
基于反射机制的EMF模型比较(4)时间:2011-09-09 IBM 石立川 王芹华 邵兵比较简单数据类型 通常,基本类型多以“==”操作符比较,但是“==”操作符在比较对象时是 按地址进行比较,所以此操作符并不适用于比较如 String 这样的简单数据类型 。按内容比较简单类型应选择 java.lang.Object 的 equals() 方法。由于 Java 自 5.0 版本新增加了自封箱(Autoboxing)特性,即 Java 编译器会在需 要时对所有基本数据类型做自封箱操作,比如将 int 自封箱为 Integer 对象, 将 boolean 自封箱为 Boolean 等。利用这个特性,只要将得到的值赋给 Object,由 Java 编译器去判断是否做自封箱处理,之后调用 equals 方法对两 个对象进行比较即可,省去了对基本数据类型的判断和使用“==”操作符比较的 繁琐步骤。比较简单数据的示例代码如清单 3: 清单 3. 用 equals 比较简单类型的数据
比较组合数据类型 对于组合数据类型,需要把其分解为简单数据类型比较。组合数据类型的字 段有可能仍是组合数据类型,所以需要进行递归分解。另外由于对象之间可能有 循环的关联关系,所以需要把已经比较过的对象放进备忘录,在每比较一个对象 之前先检查备忘录中是否已经记录了该对象,以避免程序陷入无限循环之中。 列表 (EList) 的比较算法可以简单概括为:求两个列表的差集,差集中的每 个元素都是一个比较的差异项;把两个列表的交集元素按组合类型或者简单类型 算法进行比较。清单 4 给出了比较列表的代码片断。 清单 4. 比较列表 EList
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |