com.star.object.ObjectUtil Maven / Gradle / Ivy
package com.star.object;
import java.lang.reflect.Method;
import java.nio.ByteBuffer;
import java.nio.charset.Charset;
import java.util.Arrays;
import java.util.Collection;
import java.util.Objects;
import com.star.clazz.ClassUtil;
import com.star.lang.Assert;
import com.star.reflect.MethodUtil;
import com.star.string.StringUtil;
/**
* 对象工具类
*
* @author starhq
*
*/
public final class ObjectUtil {
private ObjectUtil() {
}
/**
*
* 克隆对象
*
*/
public static T clone(final T obj) {
Assert.notNull(obj, "clone object failure,the obj is null");
final Method cloneMethod = MethodUtil.findDeclaredMethod(obj.getClass(), "clone");
return MethodUtil.invoke(obj, cloneMethod);
}
/**
* 克隆集合
*/
@SuppressWarnings("unchecked")
public static , U extends Cloneable> T cloneCollection(final T orig) {
return (T) cloneCollection(orig.getClass(), orig);
}
/**
* 克隆集合
*/
public static , O extends Collection, U extends Cloneable> O cloneCollection(
final Class type, final I orig) {
O obj = null;
if (!Objects.isNull(orig)) {
obj = ClassUtil.newInstance(type);
for (final U element : orig) {
obj.add(clone(element));
}
}
return obj;
}
/**
* 检查对象好似否为数组
*/
public static boolean isArray(final Object obj) {
Assert.notNull(obj, "Determine whether the obj is array failure,the obj is null");
return obj.getClass().isArray();
}
/**
* 对象转字符串
*/
public static String object2String(final Object object, final Charset charset) {
Assert.notNull(object, "convert object to string failue,the input object is null");
String str;
if (object instanceof byte[] || object instanceof Byte[]) {
str = StringUtil.byte2String((byte[]) object, charset);
} else if (object instanceof ByteBuffer) {
str = StringUtil.byteBuffer2String((ByteBuffer) object, charset);
} else if (isArray(object)) {
str = Arrays.toString((Object[]) object);
} else {
str = object.toString();
}
return str;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy