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); }
阅读全文
0 0
- Guava学习——Objects类
- Guava Objects类的使用方式【Guava学习笔记】
- guava学习之——guava简介
- Guava学习——集合类BiMap
- Guava学习——工具类
- Guava学习——Ordering类
- Guava学习——Range类
- Guava学习——Ints类
- Guava学习(序)——为Maven项目配置Guava
- Guava之Objects
- Guava base -- Objects
- guava学习之——集合类创建的简化。
- Guava Preconditions类使用【Guava学习笔记】
- Guava学习——集合Multimap
- Guava学习——集合工具
- Guava学习——字符串工具
- Guava工具类学习
- guava之Objects和MoreObjects
- Flask中上下文栈(context stacks)的目的?
- yum在线管理—yum命令
- c#语言-抽象类(People)的继承,方法覆盖
- Java中日期与时间相关类用法解析
- 错误:Property 'XXX' not found on type java.lang.String解决方案
- Guava学习——Objects类
- Tomcat插件启动
- 高软实验五
- SSL/TLS安全之——中间人攻击(MITM)浅析
- sql_add_drop_set.html
- 轻量级的利用Annotation方式实现Android SQLite的框架
- 数组,方法,ref和out关键字,字符串的常用方法 strin与StringBuilder
- Wannafly模拟赛4 A Laptop (RMQ)
- AlarmManager-闹钟服务