package cn.mutils.core.beans;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import cn.mutils.core.io.IOUtil;
import cn.mutils.core.json.JsonUtil;
/**
* Object utility of framework
*/
@SuppressWarnings({"unchecked", "unused", "SimplifiableIfStatement"})
public class ObjectUtil {
public static Object get(Object object, String property) {
try {
return BeanField.getField(object, property).get(object);
} catch (Exception e) {
return null;
}
}
public static void set(Object object, String property, Object value) {
try {
BeanField.getField(object, property).set(object, value);
} catch (Exception e) {
// IllegalAccessException
}
}
/**
* Deep clone
*/
public static Object clone(Serializable object) {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = null;
ByteArrayInputStream bis = null;
ObjectInputStream ois = null;
try {
oos = new ObjectOutputStream(bos);
oos.writeObject(object);
bis = new ByteArrayInputStream(bos.toByteArray());
ois = new ObjectInputStream(bis);
return ois.readObject();
} catch (Exception e) {
return null;
} finally {
IOUtil.close(bos);
IOUtil.close(oos);
IOUtil.close(bis);
IOUtil.close(ois);
}
}
public static <T> T copy(T src) {
try {
return (T) JsonUtil.fromJson(JsonUtil.toJson(src), src.getClass());
} catch (Exception e) {
return null;
}
}
public static boolean copy(Object target, Object src) {
try {
JsonUtil.fromJson(JsonUtil.toJson(src), target);
return true;
} catch (Exception e) {
return false;
}
}
public static boolean equals(Object one, Object another) {
if (one == another) {
return true;
}
if (one == null) {
return false;
} else {
return one.equals(another);
}
}
}