zoukankan      html  css  js  c++  java
  • guava学习--Objects

    转载:https://my.oschina.net/realfighter/blog/349821

     Java中的Object类是所有Java类的超类(也就是祖先),所有对象都实现Object类中的方法,在日常的工作中,我们经常需要重写其中的几个 方法, 如:equals、toString、hashCode等方法,而在工作中,我们实现这些方法有时候也比较痛苦,如equals方法判断非空、 toString调试信息不完整等等,在Guava中,其提供了Objects类帮助我们简化了这些常用方法的实现。

    几个重要的方法,如:equal,hasCode,firstNonNull,toStringHelper等。

    equal:作用与Object.equals方法相同,用于判断两个对象是否相等,无论对象是否为空,在对象为null时,避免了抛出NullPointerException。

    hasCode:作用与Object.hasCode方法相同,用于产生对象的hasCode值,一般在工作中,覆盖equals方法时也要覆盖hasCode方法,判断两个对象完全相同时,对象的equals和hasCode均需要为真。

    firstNonNull:传入两个参数,返回两个参数中不为空的那个,如果二者都不为空,返回第一个参数。

    toStringHelper:用于返回一个ToStringHelper对象。

    ToStringHelper:是Objects的静态内部类,作用是动态的添加输出信息,用于toString方法的调试,其中 add(String name, Object value)方法用于添加一组键值输出;addValue(Object value)用于添加一个未命名的值输出,不过guava建议使用add方法为value指定一个name;omitNullValues用于配置 ToStringHelper,在toString的时候忽略为null的属性。

    import com.google.common.base.Objects;
    import org.junit.Test;

    public class ObjectsTest {

    //打印方法
    private static void print(Object obj) {
    System.out.println(String.valueOf(obj));
    }

    @Test
    public void testObjects() {
    //equal方法:用于判断两个对象是否相等,避免空指针
    Objects.equal(null, 123);//false
    Objects.equal(123, 123);//true
    Objects.equal(123, null);//false
    Objects.equal(null, null);//true

    //hashCode方法:获取对传入的字段做哈希运算后产生的hashCode值
    //判断两个对象完全相同时,除了equals为真,hashCode也需要相同

    //firstNonNull:传入两个参数,返回两个参数中不为空的那个,如果二者都不为空,返回第一个参数。
    print(Objects.firstNonNull(null,"you are null"));//this is null
    print(Objects.firstNonNull("i am not null","you are null"));//i am not null
    print(Objects.firstNonNull(null,null));//NullPointerException

    //toStringHelper方法:用于轻松愉快的编写toString方法
    print(Objects.toStringHelper(this)
    .add("name", "Realfighter")
    .add("age", null)
    //注释omitNullValues后输出:ObjectsTest{name=Realfighter, age=null}
    .omitNullValues()
    .toString()); //ObjectsTest{name=Realfighter}
    }

    }

  • 相关阅读:
    dijkstra 为什么不能解决负权边?
    Asteroids poj3041
    Dining poj3281
    炮兵阵地
    玉米田Corn Fields
    互不侵犯
    Golang---内存管理(内存分配)
    单例模式-Singleton
    HTTP2.0 学习
    Golang---GMP调度策略
  • 原文地址:https://www.cnblogs.com/fanguangdexiaoyuer/p/6253093.html
Copyright © 2011-2022 走看看