NO8-10 实现高质量的equals方法,hashCode()方法,toString()方法
2014-07-27 16:51
507 查看
1.使用==操作符检查“参数是否为这个对象的引用”
2.使用instanceof操作符检查“参数是否为正确的类型”
3.把参数转换成正确的类型
4.对于类中的每个需要检查的域,检查参数中的域是否与该对象中对应的域匹配。
习惯用法:
(field==null?0,field == null : field.equals(o.field))
如果field和0.field通常是相同的对象引用,下面的做法更快一些:
(field == o.field || field=null && field.equals(o.field))
NO9:重写equals()方法时重写hashCode()方法
原则如下:
例如:
public class phoneNumber{
private final short areaCode;
private final short preFix;
private final short lineNumber;
....
}
重写hashCode()
@Override public int hashCode(){
int result = 17;
result = 31 + result + areaCode;
result = 31 + result + preFix;
result = 31 + result + lineNumber;
}
NO10:总是覆写toString()方法
@Override public String toString(){...}
2.使用instanceof操作符检查“参数是否为正确的类型”
3.把参数转换成正确的类型
4.对于类中的每个需要检查的域,检查参数中的域是否与该对象中对应的域匹配。
习惯用法:
(field==null?0,field == null : field.equals(o.field))
如果field和0.field通常是相同的对象引用,下面的做法更快一些:
(field == o.field || field=null && field.equals(o.field))
public boolean equals(Object obj) { if(obj==null) return false; if(this == obj){ return true; } if (obj instanceof Person) { Person other = (Person) obj; return (p.name).equals(this.name); } return false; }
NO9:重写equals()方法时重写hashCode()方法
原则如下:
例如:
public class phoneNumber{
private final short areaCode;
private final short preFix;
private final short lineNumber;
....
}
重写hashCode()
@Override public int hashCode(){
int result = 17;
result = 31 + result + areaCode;
result = 31 + result + preFix;
result = 31 + result + lineNumber;
}
NO10:总是覆写toString()方法
@Override public String toString(){...}
相关文章推荐
- 采用commons-lang.jar包实现equals,hashCode以及toString方法
- java对象通用方法之覆盖equals时请遵守通用约定、覆盖equals时总要覆盖hashCode、始终要覆盖toString、考虑实现Comparable接口
- 使用commons-lang.jar包以及反射机制实现javabean的equals,hashCode和toString三个方法重写
- 默认实现了equals,hashcode,tostring方法的pojo基类
- 重写Java Object对象的hashCode和equals方法实现集合元素按内容判重
- 使用EqualsBuilder和HashCodeBuilder实现hashCode()和equals()方法
- [项目bug收集整理2] Map的key,如果是非内置对象,需要自己实现hashCode和equals方法
- 实体类自动重写toString(),equals()和hashCode()方法
- Object的方法equals,hashCode,toString,clone。另外Comparable接口的方法
- hibernate之什么时候必须实现equals()和hashCode()方法?
- JAVA重写equals和hashCode方法实现不定项分类统计
- 【Java基础之Object类(一)】Java中Object类中的所有方法(toString、equals、hashCode、clone、finalize、wait和notify等)详解
- commonclipse插件---自动生成toString,hashcode,equals方法
- equals函数,hashCode(),toString()的作用和实现方法
- 两种简单的方式快速实现hashCode 和 equals方法
- ID的生成策略(hibernate的id生成策略,主键类为什么需要实现序列化接口,同时还要重写hashCode()和equals()方法)
- 为实现非系统类作为Map的key需要覆写hashCode()和equals()方法
- 自动生成ToString、equals、hashcode、compareTo方法的commons4e插件和commonclipse插件,
- 自动生成ToString、equals、hashcode、compareTo方法的commons4e插件和commonclipse插件,
- 用作Map的键必须实现equals和hashCode方法