package com.yunmall.framework.core.util;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import org.apache.commons.beanutils.BeanUtils;
import com.yunmall.framework.core.log.LogTrace;
/**
* 对象工具类
*
* @version 1.0
* @createDate 2012-8-6
* @modifyDate 2012-8-14
*/
public class BeanUtil extends BeanUtils {
private static final LogTrace log = new LogTrace("BeanUtil");
/**
* 创建bean的拷贝
*
* @param bean
* 源
* @return bean的 拷贝
*/
public static Object cloneBean(Object bean) {
try {
return BeanUtils.cloneBean(bean);
} catch (Exception e) {
log.error(e.getMessage());
return null;
}
}
/**
* 将源对象中的属性值set给目标对象中名称相同的属性
*
* @param dest
* 目标对象
* @param orig
* 源对象
*/
public static void copyProperties(Object dest, Object orig) {
try {
BeanUtils.copyProperties(dest, orig);
} catch (Exception e) {
log.error(e.getMessage());
}
}
/**
* 将对象序列化
*
* @param obj
* 要序列化的对象
* @return 序列化后的流
*/
public static ByteArrayOutputStream objToByte(Object obj) {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = null;
try {
oos = new ObjectOutputStream(bos);
oos.writeObject(obj);
} catch (IOException e1) {
log.error(e1.getMessage());
} finally {
try {
oos.close();
} catch (IOException e) {
log.error(e.getMessage());
}
}
return bos;
}
/**
* 反序列化
*
* @param byt
* 对象的序列化字节
* @return 解析后的对象
*/
public static Object byteToObj(byte[] byt) {
ObjectInputStream ois = null;
Object obj = null;
try {
ois = new ObjectInputStream(new ByteArrayInputStream(byt, 0,
byt.length));
obj = ois.readObject();
} catch (IOException e) {
log.error(e.getMessage());
} catch (ClassNotFoundException e) {
log.error(e.getMessage());
} finally {
try {
ois.close();
} catch (IOException e) {
log.error(e.getMessage());
}
}
return obj;
}
/**
* 自动遍历PO属性值,并输出
* @author 池京男
* @param obj
*/
public static String getLogString(Object obj) {
if (obj == null) return "";
StringBuffer str = new StringBuffer();
try {
Method[] sourceMethods = obj.getClass().getMethods();
for (int i = 0; i < sourceMethods.length; i++) {
if (sourceMethods[i].getName().startsWith("get")) {
String typeString = sourceMethods[i].getReturnType().getName(); // 类型
String type = getReturnType(typeString);
String filed = sourceMethods[i].getName().substring(3); // 属性
if (filed != null && filed.toLowerCase().equals("serialversionuid")) {
continue;
}
String value = "";
Object object = sourceMethods[i].invoke(obj, (Object[]) null);
if (object != null) {
value = sourceMethods[i].invoke(obj, (Object[]) null).toString();
}
str.append(type + " " + filed + "=" + value);
str.append("\n");
}
}
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
return str.toString();
}
//返加值类型
private static String getReturnType(Object type) {
String string = type.toString();
int index = string.lastIndexOf(".") + 1;
return string.substring(index);
}
}
对象工具类
最新推荐文章于 2023-04-19 17:31:07 发布