net.lulihu.ObjectKit.ObjectKit Maven / Gradle / Ivy
package net.lulihu.ObjectKit;
import net.lulihu.exception.ToolBoxException;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
/**
* 一些通用的函数
*/
public class ObjectKit {
private ObjectKit() {
}
/**
* 如果为空, 则调用默认值
* 空参数的定义如下
* 1、对象不为null
* 2、String 不为"" or " "
* 3、List,Set,Map,Object[],int[],long[] 长度大于0
*
* @param obj 被判断的参数
* @param defaultValue 为空默认值
*/
public static Object nullToDefault(Object obj, Object defaultValue) {
return hasEmpty(obj) ? defaultValue : obj;
}
/**
* 比较两个对象是否相等。
* 相同的条件有两个,满足其一即可:
* 1. obj1 == null && obj2 == null; 2. obj1.equals(obj2)
*
* @param obj1 对象1
* @param obj2 对象2
* @return 是否相等
*/
public static boolean equals(Object obj1, Object obj2) {
return Objects.equals(obj1, obj2);
}
/**
* 对象是否不为空
*
* 空参数的定义如下
* 1、String 不为"" or " "
* 2、List,Set,Map,Object[],int[],long[] 长度大于0
*
* @param o 校验对象
* @return 为空则为false 反之true
*/
public static boolean hasNotEmpty(Object o) {
return !hasEmpty(o);
}
/**
* 对象是否为空
*
* 空参数的定义如下
* 1、对象不为null
* 2、String 不为"" or " "
* 3、List,Set,Map,Object[],int[],long[] 长度大于0
*
* @param o 校验对象
* @return 为空则为true 反之false
*/
@SuppressWarnings("rawtypes")
public static boolean hasEmpty(Object o) {
if (o == null) return true;
if (o instanceof String) {
return o.toString().equals("");
} else if (o instanceof List) {
return ((List) o).size() == 0;
} else if (o instanceof Map) {
return ((Map) o).size() == 0;
} else if (o instanceof Set) {
return ((Set) o).size() == 0;
} else if (o instanceof Object[]) {
return ((Object[]) o).length == 0;
} else if (o instanceof int[]) {
return ((int[]) o).length == 0;
} else if (o instanceof long[]) {
return ((long[]) o).length == 0;
} else if (o instanceof byte[]) {
return ((byte[]) o).length == 0;
} else if (o instanceof short[]) {
return ((short[]) o).length == 0;
} else if (o instanceof boolean[]) {
return ((boolean[]) o).length == 0;
} else if (o instanceof char[]) {
return ((char[]) o).length == 0;
} else if (o instanceof double[]) {
return ((double[]) o).length == 0;
} else if (o instanceof float[]) {
return ((float[]) o).length == 0;
}
return false;
}
/**
* 获取基本数据类型的默认值 包含String和void
*
* @param clazz 数据类型
* @return 对应的默认值
*/
public static Object primitiveDefaultValue(final Class> clazz) {
if (!BeanKit.isPrimitive(clazz)) throw new ToolBoxException("类型【{}】不是基本数据类型", clazz);
Map, Object> primitiveDefaultValueMap = BasicType.primitiveDefaultValueMap;
if (primitiveDefaultValueMap.containsKey(clazz))
return primitiveDefaultValueMap.get(clazz);
return BasicType.wrapperPrimitiveDefaultValueMap.get(clazz);
}
/**
* 根据对象类型获取对象的默认值
*
* @param clazz 对象类型
* @return 默认值
*/
public static Object getDefaultValue(final Class> clazz) {
if (BeanKit.isPrimitive(clazz)) {
return primitiveDefaultValue(clazz);
}
return ClassKit.newInstanceConstructorsDefaultValue(clazz);
}
}