有点没搞懂,为啥视频里讲的是:底层调用u1.equals(u2)但是没有重写,但是我根据源码一步步传递,不是应该是u2.equals(u1)这样来比较的吗?
contain方法调用equalse方法能理解。
package collection;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Objects;
public class CollectionTest03 {
public static void main(String[] args) {
//创建集合对象
Collection c = new ArrayList();
//创建用户对象
User u1 = new User("Jack");
User u2 = new User("Jack");
c.add(u1);
System.out.println(c.contains(u2));//false User没有重写equals方法,底层调用u1.equals(u2)但是没有重写
//重写equals方法之后返回的是true,因为比较的是内容了
}
}
class User{
private String name;
public User(){};
public User(String name) {
this.name = name;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
User user = (User) o;
return name.equals(user.name);
}
}
谁equals谁不都是一样的结果吗