gistfile1.txt import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import java.util.List;import com.google.common.base.Preconditions;import com.meallink.core.exception.api.ArgumentsIncorrectException;impor
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import com.google.common.base.Preconditions;
import com.meallink.core.exception.api.ArgumentsIncorrectException;
import com.meallink.core.exception.api.InvalidOprationException;
/**
* 将一个基本数据类型转换为另一个基本数据类型。
*
*/
public class ConvertUtil {
/**
* 将指定的字符串转换为等效的指定类型的对象。
*
* @param value
* 字符串。
* @return 等效于 value 的指定类型的对象。
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
public static Object changeType(String value, Class
type) {
if ((null != value) && (value.getClass() == type)) {
return value;
}
if ((type == boolean.class) || (type == Boolean.class)) {
if ("1".equals(value)) {
return true;
}
return Boolean.parseBoolean(value);
}
if ((type == char.class) || (type == Character.class)) {
return value.charAt(0);
}
if ((type == byte.class) || (type == Byte.class)) {
return Byte.parseByte(value);
}
if ((type == short.class) || (type == Short.class)) {
return Short.parseShort(value);
}
if ((type == int.class) || (type == Integer.class)) {
return Integer.parseInt(value);
}
if ((type == long.class) || (type == Long.class)) {
return Long.parseLong(value);
}
if ((type == float.class) || (type == Float.class)) {
return Float.parseFloat(value);
}
if ((type == double.class) || (type == Double.class)) {
return Double.parseDouble(value);
}
if (type == String.class) {
return value;
}
if (type == Class.class) {
try {
return Class.forName(value);
} catch (ClassNotFoundException e) {
throw new InvalidOprationException(e.getMessage());
}
} else if (type.isEnum()) {
return Enum.valueOf((Class
) type, (String) value);
} else if (Date.class.isAssignableFrom(type)) {
try {
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(value);
} catch (ParseException e) {
try {
return new SimpleDateFormat("yyyy-MM-dd").parse(value);
} catch (ParseException e1) {
throw new InvalidOprationException(e.getMessage());
}
}
}
throw new InvalidOprationException(type.getName());
}
/**
* 将指定的 32 位整数转换为字节数组表示形式。
*
* @param value
* 32 位整数。
* @return 长度为 4 的字节数组。
*/
public static byte[] toBytes(int value) {
byte[] bytes = new byte[4];
bytes[0] = (byte) (value & 0xff);
bytes[1] = (byte) ((value >>> 8) & 0xff);
bytes[2] = (byte) ((value >>> 16) & 0xff);
bytes[3] = (byte) ((value >>> 24) & 0xff);
return bytes;
}
/**
* 返回由字节数组中指定位置的 4 个字节转换来的 32 位整数。
*
* @param bytes
* 字节数组。
* @param index
* bytes 内的起始索引。
* @return 由 4 个字节构成、从 index 开始的 32 位整数。
*/
public static int toInteger(byte[] bytes, int index) {
Preconditions.checkArgument(null != bytes);
if ((index < 0) || (index >= bytes.length)) {
throw new ArgumentsIncorrectException("index");
}
if (index + 4 > bytes.length) {
throw new ArgumentsIncorrectException("bytes");
}
return ((bytes[index] & 0xff) | ((bytes[index + 1] & 0xff) << 8)
| ((bytes[index + 2] & 0xff) << 16) | ((bytes[index + 3] & 0xff) << 24));
}
public static String toString(List
list, char c) { StringBuilder builder = new StringBuilder(); for (int i = 0; i < list.size(); i++) { if (builder.length() > 0) { builder.append(','); } builder.append(list.get(i)); } return builder.toString(); } public static Long[] toLongArray(String s) { String[] stringArray = s.split(","); Long[] longArray = new Long[stringArray.length]; for (int i = 0; i < stringArray.length; i++) { longArray[i] = Long.parseLong(stringArray[i]); } return longArray; } }
