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

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

 2010-07-06 00:00:00 来源:WEB开发网   
核心提示: 清单 2. 判断简单数据类型或组合数据类型if(remote.eGet(feature)instanceofEList||local.eGet(feature)instanceofEList){//集合数据类型,需要遍历其中每一个元素进行比较}elseif(remote.eGet(feature

清单 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 
  } 
 } 

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

Tags:基于 反射 机制

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