All Downloads are FREE. Search and download functionalities are using the official Maven repository.
Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
com.gitee.apanlh.util.reflection.ClassConvertUtils Maven / Gradle / Ivy
package com.gitee.apanlh.util.reflection;
import com.gitee.apanlh.exp.UnknownTypeException;
import com.gitee.apanlh.util.base.ChooseOr;
import com.gitee.apanlh.util.base.CollUtils;
import com.gitee.apanlh.util.base.Empty;
import com.gitee.apanlh.util.base.Eq;
import com.gitee.apanlh.util.base.IteratorUtils;
import com.gitee.apanlh.util.base.MapUtils;
import com.gitee.apanlh.util.base.StringUtils;
import com.gitee.apanlh.util.valid.ValidParam;
import java.lang.reflect.Field;
import java.util.List;
import java.util.Map;
/**
* 类转换方法
*
* @author Pan
*/
public class ClassConvertUtils {
private static final List BOOLEAN_LIST = CollUtils.newArrayList("1", "yes", "YES", "true", "TRUE", "ok" , "on", "y" , "Y", "OK", "ON");
/**
* 构造函数
*
* @author Pan
*/
private ClassConvertUtils() {
// 不允许外部实例
super();
}
/**
* JavaBean转换成HashMap
* 忽略静态字段
*
* @author Pan
* @param 数据类型
* @param bean 对象
* @return Map
*/
public static Map toMap(T bean) {
return toMap(bean, true);
}
/**
* JavaBean 转换成HashMap
* 自定义忽略静态字段
*
* @author Pan
* @param 数据类型
* @param bean 对象
* @param ignoreStaticField true忽略静态字段
* @return Map
*/
public static Map toMap(T bean, boolean ignoreStaticField) {
Field[] fields = ReflectionUtils.getFields(bean, ignoreStaticField);
return MapUtils.newHashMap(newMap -> IteratorUtils.array(fields, field -> newMap.put(field.getName(), ReflectionUtils.getFieldValue(field, bean))), fields.length);
}
/**
* 用于javaBean转换Map类型为 {@code Map}
*
* @author Pan
* @param 数据类型
* @param bean 对象
* @return Map
*/
public static Map toMapString(T bean) {
Field[] fields = ReflectionUtils.getFields(bean, true);
return MapUtils.newHashMap(map -> IteratorUtils.array(fields, field -> map.put(field.getName(), String.valueOf(ReflectionUtils.getFieldValue(field, bean)))), fields.length);
}
/**
* JavaBean转换成LinkedHashMap
* 忽略静态字段
*
* @author Pan
* @param 数据类型
* @param bean 对象
* @return Map
*/
public static Map toLinkedHashMap(T bean) {
return toLinkedHashMap(bean, true);
}
/**
* JavaBean 转换成LinkedHashMap
* 自定义忽略静态字段
*
* @author Pan
* @param 数据类型
* @param bean 对象
* @param ignoreStaticField true忽略静态字段
* @return Map
*/
public static Map toLinkedHashMap(T bean, boolean ignoreStaticField) {
Field[] fields = ReflectionUtils.getFields(bean, ignoreStaticField);
return MapUtils.newLinkedHashMap(newMap -> IteratorUtils.array(fields, field -> newMap.put(field.getName(), ReflectionUtils.getFieldValue(field, bean))));
}
/**
* Map转换相对应的Bean
*
* @author Pan
* @param 数据类型
* @param 值类型
* @param params 参数
* @param clazz 类
* @return T
*/
public static T toBean(Map params, Class clazz) {
return MapUtils.isEmpty(params) ? null : ReflectionUtils.setFields(clazz, params);
}
/**
* map转换成bean并且验证值全部存在才可转换
* 否则抛出异常
*
* @author Pan
* @param 数据类型
* @param 值类型
* @param paramMap 参数Map
* @param clazz targetClass 转换的类
* @return T
*/
public static T toBeanRequired(Map paramMap, Class clazz) {
T t = toBean(paramMap, clazz);
if (!ValidParam.requiredBean(t)) {
throw new IllegalArgumentException("map转换bean失败! 转换bean时某一个值为空或属性名与map值匹配不上!");
}
return t;
}
/**
* int转换基础类型long
*
* @author Pan
* @param value 值
* @return long
*/
public static long toLong(String value) {
return Long.parseLong(value);
}
/**
* int转换基础类型long
*
* @author Pan
* @param value 值
* @param radix 进制
* @return long
*/
public static long toLong(String value, int radix) {
return Long.valueOf(value, radix);
}
/**
* int转换基础类型long
*
* @author Pan
* @param value 值
* @return long
*/
public static long toLong(int value) {
return value;
}
/**
* Integer转换基础类型long
*
* @author Pan
* @param value 值
* @return long
*/
public static long toLong(Integer value) {
return value.longValue();
}
/**
* int转换包装类型Long
*
* @author Pan
* @param value 值
* @return Long
*/
public static Long toWrapperLong(int value) {
return toLong(value);
}
/**
* Integer转换包装类型Long
*
* @author Pan
* @param value 值
* @return Long
*/
public static Long toWrapperLong(Integer value) {
return toLong(value);
}
/**
* Integer转换包装类型Long
*
* @author Pan
* @param value 值
* @return Long
*/
public static Long toWrapperLong(String value) {
return toLong(value);
}
/**
* 将char转换为String
*
* @author Pan
* @param value 值
* @return String
*/
public static String toStr(char value) {
return String.valueOf(value);
}
/**
* 将char[]转换为String
*
* @author Pan
* @param value 值
* @return String
*/
public static String toStr(char[] value) {
return new String(value);
}
/**
* 将int转换为String
*
* @author Pan
* @param value 值
* @return String
*/
public static String toStr(int value) {
return Integer.toString(value);
}
/**
* 将Integer转换为String
*
* @author Pan
* @param value 值
* @return String
*/
public static String toStr(Integer value) {
return Integer.toString(value);
}
/**
* 将long转换为String
*
* @author Pan
* @param value 值
* @return String
*/
public static String toStr(long value) {
return Long.toString(value);
}
/**
* 将Long转换为String
*
* @author Pan
* @param value 值
* @return String
*/
public static String toStr(Long value) {
return Long.toString(value);
}
/**
* 将double转换为String
*
* @author Pan
* @param value 值
* @return String
*/
public static String toStr(double value) {
return Double.toString(value);
}
/**
* 将Double转换为String
*
* @author Pan
* @param value 值
* @return String
*/
public static String toStr(Double value) {
return Double.toString(value);
}
/**
* 将float转换为String
*
* @author Pan
* @param value 值
* @return String
*/
public static String toStr(float value) {
return Float.toString(value);
}
/**
* 将Float转换为String
*
* @author Pan
* @param value 值
* @return String
*/
public static String toStr(Float value) {
return Float.toString(value);
}
/**
* 将boolean转换为String
*
* @author Pan
* @param value 值
* @return String
*/
public static String toStr(boolean value) {
return ChooseOr.create(value, StringUtils.TRUE_STR).orElse(StringUtils.FALSE_STR);
}
/**
* 将Object转换为String
*
* @author Pan
* @param value 值
* @return String
*/
public static String toStr(Object value) {
return (value == null) ? null : value.toString();
}
/**
* 将String转换为Int
*
* @author Pan
* @param value 值
* @return String
*/
public static int toInt(String value) {
return toInt(value, 10);
}
/**
* 将String转换为Int
* 指定进制
*
* @author Pan
* @param value 值
* @param radix 进制
* @return String
*/
public static int toInt(String value, int radix) {
return Integer.parseInt(value, radix);
}
/**
* 将Long转换为int
*
* @author Pan
* @param value 值
* @return int
*/
public static int toInt(Long value) {
return toInt(toStr(value));
}
/**
* 将Integer转换为int
*
* @author Pan
* @param value 值
* @return int
*/
public static int toInt(Integer value) {
return value == null ? 0 : value;
}
/**
* 将Object转换为int
*
* @author Pan
* @param value 值
* @return int
*/
public static int toInt(Object value) {
if (value instanceof Integer) {
return toInt((Integer) value);
}
if (value instanceof Long) {
return toInt((Long) value);
}
if (value instanceof String) {
return toInt((String) value);
}
throw new UnknownTypeException("未知类型 仅支持 int/long/String类型");
}
/**
* 将值转换为boolean
*
* @author Pan
* @param value 值
* @return boolean
*/
public static boolean toBoolean(String value) {
return ChooseOr.create(BOOLEAN_LIST.contains(value), true)
.orElse(false);
}
/**
* 将value值转换为boolean
* 0将转化为false
* 1将转化为true
* 非0或1将抛出异常
*
* @author Pan
* @param value 值
* @return boolean
*/
public static boolean toBoolean(int value) {
return ChooseOr.create(Eq.object(0, value), false)
.orElseIf(Eq.object(1, value), true)
.orElse(new IllegalArgumentException("error parameter only 0 or 1 required"));
}
/**
* 将long值转换为boolean
* 0将转化为false
* 1将转化为true
*
* @author Pan
* @param value 值
* @return boolean
*/
public static boolean toBoolean(long value) {
return ChooseOr.create(Eq.object(0L, value), false)
.orElseIf(Eq.object(1L, value), true)
.orElse(new IllegalArgumentException("error parameter only 0 or 1 required"));
}
/**
* byte[]转换char[]
*
* @author Pan
* @param b 字节数组
* @return char[]
*/
public static char[] toChar(byte[] b) {
if (b == null || b.length == 0) {
return Empty.arrayChar();
}
char[] chars = new char[b.length / 2];
for (int byteNext = 0, len = b.length, i = 0; i < len; chars[byteNext++] = (char) ((b[i++] & 255) + ((b[i++] & 255) << 8))) {
// 不做处理
}
return chars;
}
/**
* chat[]转byte[]
*
* @author Pan
* @param c 字符数组
* @return byte[]
*/
public static byte[] toByte(char[] c) {
if (c == null || c.length == 0) {
return Empty.arrayByte();
}
byte[] bytes = new byte[c.length * 2];
int i = 0;
for(int j = 0, len = c.length; j < len; bytes[i++] = (byte)(c[j++] >> 8 & 255)) {
bytes[i++] = (byte)(c[j] & 255);
}
return bytes;
}
/**
* 自定义强转
* 内部捕获检查
*
* @author Pan
* @param 值
* @param 类型
* @param value 值
* @return R
*/
@SuppressWarnings("unchecked")
public static R cast(T value) {
if (ValidParam.isNull(value)) {
return null;
}
return (R) value;
}
/**
* 强转String
* 内部捕获检查
*
* @author Pan
* @param 值
* @param value 值
* @return String
*/
public static String castString(T value) {
return cast(value);
}
/**
* 强转List
* 内部捕获检查
*
* @param 值
* @param 类型
* @param value 值
* @return List
*/
public static List castList(T value) {
return cast(value);
}
/**
* 强转Map
* 内部捕获检查
*
* @author Pan
* @param 值
* @param 键类型
* @param 值类型
* @param value 值
* @return Map
*/
public static Map castMap(T value) {
return cast(value);
}
/**
* 强转Map
* value为String
* 内部捕获检查
*
* @author Pan
* @param 值
* @param 键类型
* @param value 值
* @return Map
*/
public static Map castMapStr(T value) {
return cast(value);
}
/**
* 强转byte[]
* 内部捕获检查
*
* @author Pan
* @param 值
* @param value 值
* @return String
*/
public static byte[] castArrayByte(T value) {
return cast(value);
}
/**
* 强转short[]
* 内部捕获检查
*
* @author Pan
* @param 值
* @param value 值
* @return String
*/
public static short[] castArrayShort(T value) {
return cast(value);
}
/**
* 强转int[]
* 内部捕获检查
*
* @author Pan
* @param 值
* @param value 值
* @return String
*/
public static int[] castArrayInteger(T value) {
return cast(value);
}
/**
* 强转long[]
* 内部捕获检查
*
* @author Pan
* @param 值
* @param value 值
* @return String
*/
public static long[] castArrayLong(T value) {
return cast(value);
}
/**
* 强转float[]
* 内部捕获检查
*
* @author Pan
* @param 值
* @param value 值
* @return String
*/
public static float[] castArrayFloat(T value) {
return cast(value);
}
/**
* 强转double[]
* 内部捕获检查
*
* @author Pan
* @param 值
* @param value 值
* @return String
*/
public static double[] castArrayDouble(T value) {
return cast(value);
}
/**
* 强转boolean[]
* 内部捕获检查
*
* @author Pan
* @param 值
* @param value 值
* @return String
*/
public static boolean[] castArrayBoolean(T value) {
return cast(value);
}
/**
* 强转char[]
* 内部捕获检查
*
* @author Pan
* @param 值
* @param value 值
* @return String
*/
public static char[] castArrayChar(T value) {
return cast(value);
}
}