Guava学习——Objects类

来源:互联网 发布:银行软件开发必备知识 编辑:程序博客网 时间:2024/06/01 10:09

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

//类的声明@GwtCompatiblepublic final class Objects   extends Object
//确定两个可能是空的对象是否相等static boolean equal(Object a, Object b)//生成多个值的哈希码static int hashCode(Object... objects)//

测试

import com.google.common.base.Objects;public class GuavaTester {   public static void main(String args[]){      Student s1 = new Student("Mahesh", "Parashar", 1, "VI");        Student s2 = new Student("Suresh", null, 3, null);          System.out.println(s1.equals(s2));      System.out.println(s1.hashCode());          System.out.println(      Objects.toStringHelper(s1)         .add("Name",s1.getFirstName()+" " + s1.getLastName())         .add("Class", s1.getClassName())         .add("Roll No", s1.getRollNo())         .toString());   }}class Student {   private String firstName;   private String lastName;   private int rollNo;   private String className;   public Student(String firstName, String lastName, int rollNo, String className){      this.firstName = firstName;      this.lastName = lastName;      this.rollNo = rollNo;      this.className = className;          }   @Override   public boolean equals(Object object){      if(!(object instanceof Student) || object == null){         return false;      }      Student student = (Student)object;      // no need to handle null here              // Objects.equal("test", "test") == true      // Objects.equal("test", null) == false      // Objects.equal(null, "test") == false      // Objects.equal(null, null) == true            return Objects.equal(firstName, student.firstName) // first name can be null         && Objects.equal(lastName, student.lastName) // last name can be null         && Objects.equal(rollNo, student.rollNo)            && Objects.equal(className, student.className);// class name can be null   }   @Override   public int hashCode(){      //no need to compute hashCode by self      return Objects.hashCode(className,rollNo);   }   public String getFirstName() {      return firstName;   }   public void setFirstName(String firstName) {      this.firstName = firstName;   }   public String getLastName() {      return lastName;   }   public void setLastName(String lastName) {      this.lastName = lastName;   }   public int getRollNo() {      return rollNo;   }   public void setRollNo(int rollNo) {      this.rollNo = rollNo;   }   public String getClassName() {      return className;   }   public void setClassName(String className) {      this.className = className;   }}

测试结果

false85871Student{Name=Mahesh Parashar, Class=VI, Roll No=1}
//equals方法实现//student类中 // no need to handle null here               // Objects.equal("test", "test") == true          // Objects.equal("test", null) == false          // Objects.equal(null, "test") == false          // Objects.equal(null, null) == true                return Objects.equal(firstName, student.firstName) // first name can be null             && Objects.equal(lastName, student.lastName) // last name can be null             && Objects.equal(rollNo, student.rollNo)                && Objects.equal(className, student.className);// class name can be null//打开实现 Objects类中的实现 @CheckReturnValue  public static boolean equal(@Nullable Object a, @Nullable Object b) {    return a == b || (a != null && a.equals(b));  }//再打开equals实现Object中 public boolean equals(Object obj) {        return (this == obj);    }
原创粉丝点击