package org.springside.modules.utils.base;
import java.util.Arrays;
public class ObjectUtil {
private static String NULL = "null";
/**
* 多个对象的HashCode串联
*/
public static int hashCode(Object... objects) {
return Arrays.hashCode(objects);
}
/**
* 对象的toString(),处理了对象为数组和集合的情况.
*/
public static String toPrettyString(Object value) {
if (value == null) {
return NULL;
}
Class<?> type = value.getClass();
if (type.isArray()) {
Class componentType = type.getComponentType();
if (componentType.isPrimitive()) {
StringBuilder sb = new StringBuilder();
if (componentType == int.class) {
sb.append(Arrays.toString((int[]) value));
} else if (componentType == long.class) {
sb.append(Arrays.toString((long[]) value));
} else if (componentType == double.class) {
sb.append(Arrays.toString((double[]) value));
} else if (componentType == float.class) {
sb.append(Arrays.toString((float[]) value));
} else if (componentType == boolean.class) {
sb.append(Arrays.toString((boolean[]) value));
} else if (componentType == short.class) {
sb.append(Arrays.toString((short[]) value));
} else if (componentType == byte.class) {
sb.append(Arrays.toString((byte[]) value));
} else {
throw new IllegalArgumentException("unsupport array type");
}
return sb.toString();
} else {
StringBuilder sb = new StringBuilder();
sb.append('[');
Object[] array = (Object[]) value;
for (int i = 0; i < array.length; i++) {
if (i > 0) {
sb.append(", ");
}
sb.append(toPrettyString(array[i]));
}
sb.append(']');
return sb.toString();
}
} else if (value instanceof Iterable) {
Iterable iterable = (Iterable) value;
StringBuilder sb = new StringBuilder();
sb.append('{');
int i = 0;
for (Object o : iterable) {
if (i > 0) {
sb.append(',');
}
sb.append(toPrettyString(o));
i++;
}
sb.append('}');
return sb.toString();
}
return value.toString();
}
}