Google Guava 快速入门 —— 【基础】Objects 类

Google Guava 快速入门.jpg

Guava Objects 类

Objects 类提供适用于所有对象,如 equalshashCode 等辅助函数。

在 Java7 之后提供了 Objects 类,Guava 逐步向 Java 自带的 Objects 替换。

一、类声明

以下是 com.google.common.base.Objects 类的声明:

@GwtCompatible
public final class Objects extends ExtraObjectsMethodsForWeb

二、类方法

官方文档:https://google.github.io/guava/releases/27.0.1-jre/api/docs/com/google/common/base/Objects.html

方法类型方法描述
static booleanequal(@Nullable Object a, @Nullable Object b) 
确定两个可能为null的对象是否相等。
static inthashCode(Object... objects) 
为多个值生成哈希码。

1、equals

当一个对象中的字段可以为 null 时,实现 Object.equals 方法会很痛苦,因为不得不分别对它们进行 null 检查。使用 Objects.equal 帮助你执行 null 敏感的 equals 判断,从而避免抛出 NullPointerException

例如:

Objects.equal("a", "a"); // returns true
Objects.equal(null, "a"); // returns false
Objects.equal("a", null); // returns false
Objects.equal(null, null); // returns true

2、hashCode

用对象的所有字段作散列 [hash] 运算应当更简单。Guava 的 Objects.hashCode(Object...) 会对传入的字段序列计算出合理的、顺序敏感的散列值。你可以使用 Objects.hashCode(field1, field2, …, fieldn) 来代替手动计算散列值。

Objects.hashCode("a","b","c")

三、测试类

package com.example.guava.basic;

import com.google.common.base.Objects;
import junit.framework.TestCase;

public class ObjectsTest extends TestCase {

    /**
     * 确定两个可能是空的对象是否相等。
     */
    public void testEqual() {
        assertTrue(Objects.equal("a", "a"));
        assertTrue(Objects.equal(null, null));

        assertFalse(Objects.equal(null, "a"));
        assertFalse(Objects.equal("a", null));

        String s1 = "foobar";
        String s2 = new String(s1);
        assertTrue(Objects.equal(s1, s2));
    }

    public void testHashCode() {
        int h1 = Objects.hashCode(1, "two", 3.0);
        int h2 = Objects.hashCode(new Integer(1), new String("two"), new Double(3.0));

        assertEquals(h1, h2);
        System.out.println(h1 == h2);   // true

        assertTrue(Objects.hashCode(1, 2, null) != Objects.hashCode(1, 2));
        assertTrue(Objects.hashCode(1, 2, null) != Objects.hashCode(1, null, 2));
        assertTrue(Objects.hashCode(1, null, 2) != Objects.hashCode(1, 2));
        assertTrue(Objects.hashCode(1, 2, 3) != Objects.hashCode(3, 2, 1));
        assertTrue(Objects.hashCode(1, 2, 3) != Objects.hashCode(2, 3, 1));
    }
}

四、相关文章

五、相关文章



未经允许请勿转载:程序喵 » Google Guava 快速入门 —— 【基础】Objects 类

点  赞 (1) 打  赏
分享到: