基于反射机制的 EMF 模型比较
2010-07-06 00:00:00 来源:WEB开发网清单 2. 判断简单数据类型或组合数据类型
if (remote.eGet(feature) instanceof EList|| local.eGet(feature) instanceof EList) {
// 集合数据类型,需要遍历其中每一个元素进行比较
}
else if(remote.eGet(feature) instanceof EObject||local.eGet(feature) instanceof EObject)
{
// 组合数据类型
} else {
// 简单数据类型
}
清单 2 代码通过 instanceof 操作符首先区分出列表类型,然后再区分出组合数据类型,余下的作为简单数据类型处理。区分 EList 是因为它是一种集合数据类型,需要进行遍历其中元素。比较 EList 的方法将在第 3.4 节中详细叙述。
比较简单数据类型
通常,基本类型多以“==”操作符比较,但是“==”操作符在比较对象时是按地址进行比较,所以此操作符并不适用于比较如 String 这样的简单数据类型。按内容比较简单类型应选择 java.lang.Object 的 equals() 方法。由于 Java 自 5.0 版本新增加了自封箱(Autoboxing)特性,即 Java 编译器会在需要时对所有基本数据类型做自封箱操作,比如将 int 自封箱为 Integer 对象,将 boolean 自封箱为 Boolean 等。利用这个特性,只要将得到的值赋给 Object,由 Java 编译器去判断是否做自封箱处理,之后调用 equals 方法对两个对象进行比较即可,省去了对基本数据类型的判断和使用“==”操作符比较的繁琐步骤。比较简单数据的示例代码如清单 3:
清单 3. 用 equals 比较简单类型的数据
Object remoteValue = remote.eGet(feature);
Object localValue = local.eGet(feature);
if (remoteValue != null && localValue != null) {
if (!remoteValue.equals(localValue)) {
// remote value and local value are different
}
}
更多精彩
赞助商链接