本文是对java底层实现的了解和学习。最近在搬家,这是之前发表于百度的文章。
本文主要比较同一个Class中两个实例值得不同,并获取不同之处。通过在类中轮询类的所有属性,比较两个实例间的值,计算出其中的差异,代码如下:
public ObuConfig queryDifObuConfig(ObuConfig obuConfig) throws IllegalArgumentException, IllegalAccessException{
ObuConfig config = new ObuConfig();
Field[] fields = this.getClass().getDeclaredFields();
for(Field field:fields){
if(field.getType().equals(long.class)
|| field.getType().equals(Log.class)
|| field.getType().equals(Integer.class)){
continue;
}
field.setAccessible(true);
if(null == field.get(this)
|| !field.get(this).equals(field.get(obuConfig))){
field.set(config, field.get(obuConfig));
}
}
return config;
}
这是一种通用方法,能够适用于很多地方,类似对象的equal()实现,copy()等。