[java]代码库
public class TwoBeanUtils {
/** 日志输出 */
final static Logger log = LoggerFactory.getLogger(TwoBeanUtils.class);
/**
* 简单对象间属性一致时的值拷贝
* @param from
* @param to
*/
public static void copyFormToBean(Object from,Object to){
try{
Field[] field = from.getClass().getDeclaredFields();
for (int i = 0; i < field.length; i++) {
try{
String fieldname = field[i].getName();
String setMethodname = new StringBuffer("set").append(
fieldname.substring(0, 1).toUpperCase()).append(
fieldname.substring(1)).toString();
String getMethodname = new StringBuffer("get").append(
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();
Object[] paras=new Object[1];
paras[0]=method.invoke(from,null);
if ( paras[0]!=null){
to.getClass().getMethod(setMethodname, cla).invoke(
to, paras);
}
}catch(Exception e){
}
}
}catch(Exception e){
log.error("form表单拷贝到对象", e);
}
}
/**
* 简单对象间属性一致时的值拷贝
* @param from
* @param to
*/
public static void copyBeanToForm(Object from,Object to){
try{
Field[] field = to.getClass().getDeclaredFields();
for (int i = 0; i < field.length; i++) {
try{
String fieldname = field[i].getName();
String setMethodname = new StringBuffer("set").append(
fieldname.substring(0, 1).toUpperCase()).append(
fieldname.substring(1)).toString();
String getMethodname = new StringBuffer("get").append(
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();
Object[] paras=new Object[1];
paras[0]=method.invoke(from,null);
//System.out.println(fieldname+"="+paras[0]);
to.getClass().getMethod(setMethodname, cla).invoke(
to, paras);
}catch(Exception e){
}
}
}catch(Exception e){
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();
String claname[]=new String[field.length];
//System.out.println(field.length);
for (int i = 0; i < field.length; i++) {
try{
List list = new ArrayList();
String fieldname = field[i].getName();
String setMethodname = new StringBuffer("set").append(
fieldname.substring(0, 1).toUpperCase()).append(
fieldname.substring(1)).toString();
String getMethodname = new StringBuffer("get").append(
fieldname.substring(0, 1).toUpperCase()).append(
fieldname.substring(1)).toString();
int k = 0;
Iterator enmu = bean.iterator();
while (enmu.hasNext()) {
Object temp = enmu.next();
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]);
Object[] paras=new Object[1];
Object obj=null;
obj= Array.newInstance(Class.forName(claname[i]),bean.size());
list.toArray((Object[])obj);
paras[0]=obj;
beans.getClass().getMethod(setMethodname, cla).invoke(
beans, paras);
}catch(Exception ex){
//有可能beans中的属性,List的对象没有
}
}
}
} catch (Exception e) {
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) {
List list = new ArrayList();
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();
String setMethodname = new StringBuffer("set").append(
fieldname.substring(0, 1).toUpperCase()).append(
fieldname.substring(1)).toString();
String getMethodname = new StringBuffer("get").append(
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());
Object[] paras=new Object[1];
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());
Object[] paras=new Object[1];
paras[0]=null;
//System.out.println(Array.get(arr,start));
bean.getMethod(setMethodname, cla).invoke(
addobj, paras);
}
}catch(Exception ex){
Class[] cla = new Class[1];
cla[0] = bean.getDeclaredField(fieldname)
.getType();
//System.out.println(cla[0].getName());
Object[] paras=new Object[1];
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);
}
} catch (Exception e) {
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
*/
public static List copyBeansToBean(Object beans, List bean) {
List list = bean;
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();
String setMethodname = new StringBuffer("set").append(
fieldname.substring(0, 1).toUpperCase()).append(
fieldname.substring(1)).toString();
String getMethodname = new StringBuffer("get").append(
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());
Object[] paras=new Object[1];
paras[0]=Array.get(arr,start);
//System.out.println(Array.get(arr,start));
beanclass.getMethod(setMethodname, cla).invoke(
addobj, paras);
}
}catch(Exception ex){}
}
start++;
}
// System.out.println("list size="+start);
}
} catch (Exception e) {
log.error("Beans拷贝到List,元素为bean", e);
}
//System.out.println("list size="+list.size());
return list;
}
}
//源代码片段来自云代码http://yuncode.net