All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.hb0730.commons.lang.ObjectUtils Maven / Gradle / Ivy

There is a newer version: 2.1.2-RELEASE
Show newest version
package com.hb0730.commons.lang;

import java.lang.reflect.Array;
import java.util.*;

/**
 * 对象操作类
 *
 * @author bing_huang
 * @since 1.0.1
 */
public class ObjectUtils {

    /**
     * 校验对象是否为null
     *
     * @param obj 需要校验的对象
     * @return true: 为null
     */
    public static boolean isNull(Object obj) {
        return null == obj;
    }

    /**
     * 校验对象是否非null
     *
     * @param obj 需要校验的对象
     * @return true:非null
     */
    public static boolean isNotNull(Object obj) {
        return !isNull(obj);
    }

    /**
     * 校验指定对象是否为空,支持类型:
     * 
     *     1. CharSequence
     *     2. Collection
     *     3. Map
     *     4. Array
     *     5. Optional
     *     6. Iterator
     * 
* * @param obj 需要校验的对象 * @return true: 对象为空,false 不为空或者不支持 */ @SuppressWarnings("rawtypes") public static boolean isEmpty(Object obj) { if (null == obj) { return true; } if (obj instanceof CharSequence) { return 0 == ((CharSequence) obj).length(); } else if (obj instanceof Collection) { return ((Collection) obj).isEmpty(); } else if (obj instanceof Map) { return ((Map) obj).isEmpty(); } else if (obj.getClass().isArray()) { return 0 == Array.getLength(obj); } else if (obj instanceof Optional) { return !((Optional) obj).isPresent(); } else if (obj instanceof Iterator) { return !((Iterator) obj).hasNext(); } return false; } /** * 比较两个对象是否相等: *
     * 1. o1==null && o2==null
     * 2. o1!=null && o2.equals(o2)
     * 
* * @param o1 对象1 * @param o2 对象2 * @return true: 对象相等 * @see Objects#equals(Object, Object) */ public static boolean equal(Object o1, Object o2) { return Objects.equals(o1, o2); } /** * 比较两个对象是否不相等 * * @param o1 对象1 * @param o2 对象2 * @return true:不相等 * @see #equal(Object, Object) */ public static boolean notEqual(Object o1, Object o2) { return !equal(o1, o2); } /** * 获取对象长度,如果对象为null,返回0,如果对象锁不支持的类型返回-1
* 支持类型如下: *
    *
  • CharSequence
  • *
  • Collection
  • *
  • Map
  • *
  • Array
  • *
* * @param obj 被计算长度的对象 * @return 长度, */ @SuppressWarnings("rawtypes") public static int length(Object obj) { if (null == obj) { return 0; } if (obj instanceof CharSequence) { return ((CharSequence) obj).length(); } else if (obj instanceof Collection) { return ((Collection) obj).size(); } else if (obj instanceof Map) { return ((Map) obj).size(); } else if (obj.getClass().isArray()) { return Array.getLength(obj); } return -1; } /** * 比较两个对象的大小, * * @param t1 被比对象1 * @param t2 被比参数2 * @param 实现了{@link Comparable}的类型 * @return
    *
  • t1 < t2 返回正数
  • *
  • t1 = t2 返回0
  • *
  • t1>t2 返回负数
  • *
* @see Comparable#compareTo(Object) * @see #compare(Comparable, Comparable, boolean) */ public static > int compare(T t1, T t2) { return compare(t1, t2, false); } /** * 比较两个对象的大小, * * @param t1 被比对象1 * @param t2 被比参数2 * @param nullGreater null最大 * @param 实现了{@link Comparable}的类型 * @return
    *
  • t1 < t2 返回正数
  • *
  • t1 = t2 返回0
  • *
  • t1>t2 返回负数
  • *
* @see Comparable#compareTo(Object) */ public static > int compare(T t1, T t2, boolean nullGreater) { if (t1 == t2) { return 0; } if (t1 == null) { return nullGreater ? 1 : -1; } else if (t2 == null) { return nullGreater ? -1 : 1; } return t1.compareTo(t2); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy