public class TwoBeanUtils {
/** 日志输出 */
final static Logger log = LoggerFactory.getLogger(TwoBeanUtils.class);
/**
* 简单对象间属性一致时的值拷贝
* @param from
* @param to
*/
try{
Field[] field
= from.
getClass().
getDeclaredFields();
for (int i = 0; i < field.length; i++) {
try{
String fieldname
= field
[i
].
getName();
fieldname.substring(0, 1).toUpperCase()).append(
fieldname.substring(1)).toString();
fieldname.substring(0, 1).toUpperCase()).append(
fieldname.substring(1)).toString();
Method method
= from.
getClass().
getMethod(getMethodname,
null);
Class[] cla = new Class[1];
cla[0] = field[i].getType();
paras[0]=method.invoke(from,null);
if ( paras[0]!=null){
to.getClass().getMethod(setMethodname, cla).invoke(
to, paras);
}
}
}
log.error("form表单拷贝到对象", e);
}
}
/**
* 简单对象间属性一致时的值拷贝
* @param from
* @param to
*/
try{
Field[] field
= to.
getClass().
getDeclaredFields();
for (int i = 0; i < field.length; i++) {
try{
String fieldname
= field
[i
].
getName();
fieldname.substring(0, 1).toUpperCase()).append(
fieldname.substring(1)).toString();
fieldname.substring(0, 1).toUpperCase()).append(
fieldname.substring(1)).toString();
// System.out.println(fieldname);
Method method
= from.
getClass().
getMethod(getMethodname,
null);
Class[] cla = new Class[1];
cla[0] = field[i].getType();
paras[0]=method.invoke(from,null);
//System.out.println(fieldname+"="+paras[0]);
to.getClass().getMethod(setMethodname, cla).invoke(
to, paras);
}
}
log.error("对象拷贝到form表单", e);
}
}
/**
* 简单对象间属性名一致时的值拷贝
* @param bean其为一组简单属性的对象
* @param beans其属性为bean元素对象属性的数组
*/
public static void copyBeanToBeans
(List bean,
Object beans
) {
try {
if (bean != null) {
Field[] field
= beans.
getClass().
getDeclaredFields();
//System.out.println(field.length);
for (int i = 0; i < field.length; i++) {
try{
String fieldname
= field
[i
].
getName();
fieldname.substring(0, 1).toUpperCase()).append(
fieldname.substring(1)).toString();
fieldname.substring(0, 1).toUpperCase()).append(
fieldname.substring(1)).toString();
int k = 0;
while (enmu.hasNext()) {
claname[i]=temp.getClass().getDeclaredField(fieldname).getType().getName();
Method method
= temp.
getClass().
getMethod(getMethodname,
null);
list.add(method.invoke(temp, null));
k++;
}
Class[] cla = new Class[1];
cla[0] = beans.getClass().getDeclaredField(fieldname)
.getType();
//System.out.println(cla[0]);
obj
= Array.
newInstance(Class.
forName(claname
[i
]),bean.
size());
paras[0]=obj;
beans.getClass().getMethod(setMethodname, cla).invoke(
beans, paras);
//有可能beans中的属性,List的对象没有
}
}
}
log.error("List拷贝到Beans表单", e);
}
}
/**
* 简单对象间属性名一致时的值拷贝
* @param bean为简单属性的对象类
* @param beans其属性为bean对象属性的数组
* @param size beans属性数组的长度
* @return List 一组元素为bean的ArrayList
*/
public static List copyBeansToBean
(Object beans,
Class bean,
int size
) {
try {
if (beans != null) {
int start=0;
while(start<size){
Object addobj
=Class.
forName(bean.
getName()).
getConstructor(null).
newInstance(null);
Field[] field
= bean.
getDeclaredFields();
for (int i = 0; i < field.length; i++) {
String fieldname
= field
[i
].
getName();
fieldname.substring(0, 1).toUpperCase()).append(
fieldname.substring(1)).toString();
fieldname.substring(0, 1).toUpperCase()).append(
fieldname.substring(1)).toString();
try{
Method method
= beans.
getClass().
getMethod(getMethodname,
null);
Object arr
=method.
invoke(beans,
null);
//System.out.println(fieldname+"===="+arr);
int tempsize
=arr
==null ? 0:Array.
getLength(arr
);
//System.out.println("tempsize="+tempsize);
if (tempsize>=size){
Class[] cla = new Class[1];
cla[0] = bean.getDeclaredField(fieldname)
.getType();
//System.out.println(cla[0].getName());
paras
[0]=Array.
get(arr,start
);
//System.out.println(Array.get(arr,start));
bean.getMethod(setMethodname, cla).invoke(
addobj, paras);
}else{
Class[] cla = new Class[1];
cla[0] = bean.getDeclaredField(fieldname)
.getType();
//System.out.println(cla[0].getName());
paras[0]=null;
//System.out.println(Array.get(arr,start));
bean.getMethod(setMethodname, cla).invoke(
addobj, paras);
}
Class[] cla = new Class[1];
cla[0] = bean.getDeclaredField(fieldname)
.getType();
//System.out.println(cla[0].getName());
paras[0]=null;
//System.out.println(Array.get(arr,start));
bean.getMethod(setMethodname, cla).invoke(
addobj, paras);
}
}
list.add(addobj);
start++;
}
//System.out.println("list size="+start);
}
log.error("Beans拷贝到List,元素为bean", e);
}
//System.out.println("list size="+list.size());
return list;
}
/**
* 简单对象间属性名一致时的值拷贝
* @param list 每一个元素bean为简单属性的对象类
* @param beans其属性为bean对象属性的数组
* @param size beans属性数组的长度
* @return List 一组元素为bean的ArrayList
*/
int size=list.size();
try {
if (beans != null) {
int start=0;
while(start<size){
Object addobj
=list.
get(start
);
Class beanclass=addobj.getClass();
Field[] field
= beanclass.
getDeclaredFields();
for (int i = 0; i < field.length; i++) {
try{
String fieldname
= field
[i
].
getName();
fieldname.substring(0, 1).toUpperCase()).append(
fieldname.substring(1)).toString();
fieldname.substring(0, 1).toUpperCase()).append(
fieldname.substring(1)).toString();
Method method
= beans.
getClass().
getMethod(getMethodname,
null);
Object arr
=method.
invoke(beans,
null);
//System.out.println(fieldname+"===="+arr);
int tempsize
=arr
==null ? 0:Array.
getLength(arr
);
//System.out.println("tempsize="+tempsize);
if (tempsize==size){
Class[] cla = new Class[1];
cla[0] = beanclass.getDeclaredField(fieldname)
.getType();
//System.out.println(cla[0].getName());
paras
[0]=Array.
get(arr,start
);
//System.out.println(Array.get(arr,start));
beanclass.getMethod(setMethodname, cla).invoke(
addobj, paras);
}
}
start++;
}
// System.out.println("list size="+start);
}
log.error("Beans拷贝到List,元素为bean", e);
}
//System.out.println("list size="+list.size());
return list;
}
}
//源代码片段来自云代码http://yuncode.net