Guava学习笔记:复写的Object常用方法

  在Java中Object类是所有类的父类,其中有几个需要override的方法比如equals,hashCode和toString等方法。每次写这几个方法都要做很多重复性的判断, 很多类库提供了覆写这几个方法的工具类, Guava也提供了类似的方式。下面我们来看看Guava中这几个方法简单使用。

  equals方法:

  equals是一个经常需要覆写的方法, 可以查看Object的equals方法注释, 对equals有几个性质的要求:    1. 自反性reflexive:任何非空引用x,x.equals(x)返回为true;    2. 对称性symmetric:任何非空引用x和y,x.equals(y)返回true当且仅当y.equals(x)返回true;    3. 传递性transitive:任何非空引用x和y,如果x.equals(y)返回true,并且y.equals(z)返回true,那么x.equals(z)返回true;    4. 一致性consistent:两个非空引用x和y,x.equals(y)的多次调用应该保持一致的结果,香港空间,(前提条件是在多次比较之间没有修改x和y用于比较的相关信息);    5. 对于所有非null的值x, x.equals(null)都要返回false。 (如果你要用null.equals(x)也可以,会报NullPointerException)。

  当我们要覆写的类中某些值可能为null的时候,就需要对null做很多判断和分支处理。 使用Guava的Objects.equal方法可以避免这个问题,虚拟主机, 使得equals的方法的覆写变得更加容易, 而且可读性强,简洁优雅。

import org.junit.Test;import com.google.common.base.Objects;public class ObjectTest {@Testpublic void equalTest() {System.out.println(Objects.equal(“a”, “a”));System.out.println(Objects.equal(null, “a”));System.out.println(Objects.equal(“a”, null));System.out.println(Objects.equal(null, null));}@Testpublic void equalPersonTest() {System.out.println(Objects.equal(new Person(“peida”,23), new Person(“peida”,23)));Person person=new Person(“peida”,23);System.out.println(Objects.equal(person,person));}}class Person {public String name;public int age;Person(String name, int age) {this.name = name;this.age = age;}},虚拟主机以诚感人者,人亦诚而应。

Guava学习笔记:复写的Object常用方法

相关文章:

你感兴趣的文章:

标签云: