写了个公共方法,用新对象中非NULL属性值去取代老对象中的同名属性值,备忘。
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class Test
{
/**
* @param args
*/
public static void main(String[] args)
{
User user1 = new User();
User user2 = new User();
user2.setAge(222);
user2.setNum(333);
user2.setUserName("222Name");
User user = (User) replaceValue(user1, user2);
System.out.println(user.toString());
}
public static String generateSetName(String fieldName) {
if (null == fieldName || "".equals(fieldName)) {
return null;
}
return "set" + fieldName.substring(0, 1).toUpperCase()
+ fieldName.substring(1);
}
private static Object replaceValue(Object newObject, Object oldObject)
{
try
{
Field[] incrementFields = newObject.getClass().getDeclaredFields();
Field[] oldFields = oldObject.getClass().getDeclaredFields();
for (int i = 0; i < incrementFields.length; i++)
{
Field incrementField = incrementFields[i];
incrementField.setAccessible(true);
for (int j = 0; j < oldFields.length; j++)
{
Field field = incrementFields[j];
field.setAccessible(true);
if (incrementField.getName().equals(field.getName()))
{
if(incrementField.get(newObject) != null)
{
Method fieldSetMet = newObject.getClass()
.getMethod(generateSetName(incrementField.getName()), incrementField.getType());
fieldSetMet.invoke(oldObject, incrementField.get(newObject));
}
}
}
}
} catch (Exception ex)
{
ex.printStackTrace();
}
return oldObject;
}
}
分享到:
相关推荐
数据实体类中如何给属性赋值.因为从数据库中取出来的是一个DataSet如果一个一个给数据实体类中的属性赋值显的非常的笨拙,而且我们的数据表多达100个.在网上搜索了下写出了个简单的方法,代码如下: 首先我们做个实体...
给目标对象赋值另一个对象时,只是将源对象的地址指向了目标对象,而并没有执行对象属性的set器,有时需要使用set做通知,本实例通过构造及反射实现类属性自动赋值。
最近有遇到两个类之间的赋值问题,两个类的属性几乎都一样的,所以写了个通过反射获取属性的然后赋值的方法,把一个类的属性的值赋值给另一个类。 框架是.net 4.5 public static D Mapper(S s) { D d = Activator...
近有遇到两个类之间的赋值问题,两个类的属性几乎都一样的,所以写了个通过反射获取属性的然后赋值的方法,把一个类的属性的值赋值给另一个类。 框架是.net 4.5 public static D Mapper(S s) { D d = ...
下面小编就为大家带来一篇java反射遍历实体类属性和类型,并赋值和获取值的简单方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
三调图斑赋值插件,arcgis10.3以上环境,选择地类直接点击图斑完成赋值
今天小编就为大家分享一篇关于Java实现不同的类的属性之间相互赋值,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
并提供个两构造方法,一个无参,默认给name赋值为AAA,给legs赋值为4;另一个需要两个参数,分别用这两个参数给私有属性赋值。要求在第一个构造方法中调用第二个构造方法。该类还有两个重载的move()方法,其中一个无...
主要介绍了spring boot空属性赋值问题与aspect日志实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
本文实例讲述了C#编程获取实体类属性名和值的方法。分享给大家供大家参考,具体如下: 遍历获得一个实体类的所有属性名,以及该类的所有属性的值 //先定义一个类: public class User { public string name { get;...
1) Student类有name(姓名)、和age(年龄)属性,一个包含两个参数的构造方法,用于给name和age属性赋值,一个show()方法打印Student的属性信息 2) 本科生类Undergraduate增加一个degree(学位)属性。有一个包含三个...
主要介绍了Java中的静态内部类详解及代码示例,具有一定参考价值,需要的朋友可以了解下。
如果可以结婚,将其partner属性赋值为其配偶。 结婚必须满足以下3个条件。 必须是异性,同性暂时不允许结婚 有配偶者不能结婚,犯重婚罪。 要达到年龄方可结婚:男方23岁以上,女性21岁以上。
主要介绍了C#实现利用反射简化给类字段赋值的方法,涉及C#操作反射的相关技巧,需要的朋友可以参考下
可以在VC++中如下调用IDispatch接口中的属性和方法 //获取属性值 _bstr_t bstrValue=CVB::get(pDispatch,L\"Value\"); //设置属性值 CVB::put(pDispatch,L\"Value\",bstrValue); //调用方法 _bstr_t bstrMessage2...
反射实现两个类的对象之间相同属性快速赋值,MapperToModel,数据源实体和目标实体将进行转换
前台字符串赋值给JavaBean属性自动类型转换的实现(BeanUtils,ConverterConvertUtils三个类的使用)
3)Student类中定义一个无参的构造方法和一个接收两个参数的构造方法,两个参数分别为姓名和成绩属性赋值 4)在测试类中创建两个Student对象,一个使用无参的构造方法,然后调用方法给姓名和成绩赋值,一个使用有参...
c#写得类似于BeanUtils中的copyProteries方法,就是把一个类的属性复制到另一个类中,而不需要一行一行的去为属性赋值。