Guava库学习:Guava中Objects实用工具类的学习

    连接地址:http://www.xx566.com/detail/128.html
html

    Java中的Object类是全部Java类的超类(也就是祖先),全部对象都实现Object类中的方法,在平常的工做中,咱们常常须要重写其中的几个 方法, 如:equals、toString、hashCode等方法,而在工做中,咱们实现这些方法有时候也比较痛苦,如equals方法判断非空、 toString调试信息不完整等等,在Guava中,其提供了Objects类帮助咱们简化了这些经常使用方法的实现,接下来,咱们一块儿来学习一下。java

 

    首先,咱们翻看它的源码,其中包含了几个重要的方法,如:equal,hasCode,firstNonNull,toStringHelper等, 咱们依次进行介绍。工具

 

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

 

hasCode:做用与Object.hasCode方法相同,用于产生对象的hasCode值,通常在工做中,覆盖equals方法时也要覆盖hasCode方法,判断两个对象彻底相同时,对象的equals和hasCode均须要为真。this

 

firstNonNull:传入两个参数,返回两个参数中不为空的那个,若是两者都不为空,返回第一个参数。google

 

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

 

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

 

    接下来,咱们来看下面的代码,其中简单的对以上的方法作了应用,代码以下:code

package guava;
 
import com.google.common.base.Objects;
import org.junit.Test;
 
/**
 * Objects:Object方法工具类
 * User: Realfighter
 * Date: 2014/8/20
 * Time: 9:42
 */
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}
    }
 
}
相关文章
相关标签/搜索