美文网首页
Java | 源码知识点之Objects

Java | 源码知识点之Objects

作者: 脱脂蛋丁 | 来源:发表于2017-11-16 21:37 被阅读0次

    Objects类提供了一些静态方法,可以对对象进行一些简单的处理,虽然说简单,但是直到1.7才有。看下代码:

    1. 两个equals:
            public static boolean equals(Object a, Object b) {
                return (a == b) || (a != null && a.equals(b));
            }
    

    这个写法是不是很熟悉,平时在写代码过程中会经常写这样的判断语句,新增方法直接简化了很多。

            public static boolean deepEquals(Object a, Object b) {
                if (a == b)
                    return true;
                else if (a == null || b == null)
                    return false;
                else
                    return Arrays.deepEquals0(a, b);
            }
    

    相较于equals方法,增加了一个对数组的判断。

    2.哈希码操作:

            public static int hashCode(Object o) {
                return o != null ? o.hashCode() : 0;
            }
    
            public static int hash(Object... values) {
                return Arrays.hashCode(values);
            }
    

    3.toString:

            public static String toString(Object o) {
                return String.valueOf(o);
            }
            public static String toString(Object o, String nullDefault) {
                return (o != null) ? o.toString() : nullDefault;
            }
    

    toString(Object o, String nullDefault)这个方法相较于toString(Object o)方法多了个非空判断,为空则使用默认值,非空则使用toString()。

    1. 比较
            public static <T> int compare(T a, T b, Comparator<? super T> c) {
                return (a == b) ? 0 :  c.compare(a, b);
            }
    

    简洁优雅,一句话搞定,日常写代码时可以好好借鉴下。

    1. 判断非空
            public static boolean isNull(Object obj) {
                return obj == null;
            }
            public static boolean nonNull(Object obj) {
                return obj != null;
            }
    

    小结:如果有用过google的Guava库,估计看到部分上述代码会非常熟悉,应该是官方收编的赶脚。这些方法多了很多非空的判断,同时将基本类型和引用类型的不同操作进行了统一封装(实际上就是调用时不用区分==还是equals),简化了平时的开发。

    相关文章

      网友评论

          本文标题:Java | 源码知识点之Objects

          本文链接:https://www.haomeiwen.com/subject/rxirvxtx.html