com.loocme.sys.util.ClassUtil Maven / Gradle / Ivy
package com.loocme.sys.util;
import lombok.extern.slf4j.Slf4j;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* class类使用帮助类
*
* @author loocme
*/
@Slf4j
public class ClassUtil
{
/**
* 通过对象获取对象的class
*
* @param obj 对象
* @return 对象的class
*/
public static Class> getType(Object obj)
{
return obj.getClass();
}
/**
* 检验对象是否为名为clzName的class实例
*
* @param clzName 类名
* @param obj 对象
* @return 检验结果
*/
public static boolean checkType(String clzName, Object obj)
{
if (obj == null)
{
return true;
}
Class> clz = ReflectUtil.getClass(clzName);
return obj.getClass().isAssignableFrom(clz);
}
public static boolean checkType(String clzName, Class> iclz)
{
if (iclz == null)
{
return false;
}
Class> clz = ReflectUtil.getClass(clzName);
return iclz.isAssignableFrom(clz);
}
/**
* 将string类型的值转换成className类型的值
*
* @param className 需要获取类型名称
* @param value 参数值
* @return 转换后的值
*
* i.e. getValue("java.lang.Integer", "12")=12;//(Integer)
*/
public static Object getValue(String className, String value)
{
Class> clz = ReflectUtil.getClass(className);
if (StringUtil.isNull(value))
{
return null;
}
if (clz.equals(String.class))
{
return value;
}
else if (clz.equals(Integer.class))
{
return StringUtil.getInteger(value);
}
else if (clz.equals(Long.class))
{
return StringUtil.getLong(value);
}
else if (clz.equals(Double.class))
{
return StringUtil.getDouble(value);
}
else if (clz.equals(Date.class))
{
return DateUtil.getDate(value);
}
else if (clz.equals(BigDecimal.class))
{
return new BigDecimal(value);
}
else
{
log.error("未定义转换的class类型({})", className);
return null;
}
}
/**
* 判断对象是否为string类型数据
*
* @param obj 对象
* @return 校验结果
*/
public static boolean isString(Object obj)
{
return obj instanceof String;
}
/**
* 判断对象是否为double类型数据
*
* @param obj 对象
* @return 校验结果
*/
public static boolean isDouble(Object obj)
{
return obj instanceof Double;
}
/**
* 判断对象是否为float类型数据
*
* @param obj 对象
* @return 校验结果
*/
public static boolean isFloat(Object obj)
{
return obj instanceof Float;
}
/**
* 判断对象是否为int类型数据
*
* @param obj 对象
* @return 校验结果
*/
public static boolean isInteger(Object obj)
{
return obj instanceof Integer;
}
/**
* 判断对象是否为date类型数据
*
* @param obj 对象
* @return 校验结果
*/
public static boolean isDate(Object obj)
{
return obj instanceof Date;
}
/**
* 判断对象是否为array类型数据
*
* @param obj 对象
* @return 校验结果
*/
public static boolean isArray(Object obj)
{
return obj.getClass().isArray();
}
/**
* 判断对象是否为list类型数据
*
* @param obj 对象
* @return 校验结果
*/
public static boolean isList(Object obj)
{
return obj instanceof List;
}
/**
* 判断对象是否为map类型数据
*
* @param obj 对象
* @return 校验结果
*/
public static boolean isMap(Object obj)
{
return obj instanceof Map;
}
}