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}
    }
 
}
相關文章
相關標籤/搜索