1.在改写equals的时候请遵守通用约定。
1)一个类的每个实例本质上都是惟一的。
2)不关心一个类是否提供了“逻辑相等”的测试功能。
3)超类改写了equals,从超类继承过来的行为对于子类也是合适的。
1)一个类的每个实例本质上都是惟一的。
2)不关心一个类是否提供了“逻辑相等”的测试功能。
3)超类改写了equals,从超类继承过来的行为对于子类也是合适的。
public class CaseInsentiveString {
private String s;
public CaseInsentiveString(String s) {
this.s = s;
}
@Override
public boolean equals(Object o) {
return o instanceof CaseInsentiveString&&s.equalsIgnoreCase(((CaseInsentiveString)o).s);
}
public static void main(String []args){
CaseInsentiveString cis=new CaseInsentiveString("HelloWorld");
CaseInsentiveString cis2=new CaseInsentiveString("Helloworld");
String str="HelloWorld";
System.out.println(cis.equals(str)); //false
System.out.println(cis.equals(cis2));//true
}
}