美文网首页
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