import java.util.HashSet;
import java.util.Collection;
public class Demo{
public static void main(String[] args){
Collection c = new HashSet();
c.add(new Person("well"));
c.remove(new Person("well"));
System.out.println(c);
}
}
class Person{
private String name;
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public Person(String name){
this.name = name;
}
public String toString(){
return name;
}
public boolean equals(Object obj){
if (obj instanceof Person){
Person person = (Person)obj;
return (name.equals(person.name));//!!!!为什么不报错?name是private修饰的,怎么可以直接调用?
}
return super.equals(obj);
}
public int hashCode(){
return name.hashCode();
}
}
问题: return (name.equals(person.name));这句话为什么不报错呢?
------解决思路----------------------
为什么要报错。在同一个类里使用
------解决思路----------------------
调用的对象和传入的对象是同一类就行
比如student有个equals 传入的是student就可以,传入其他类对象就不行