问答详情
源自:6-1 学生选课---判断 List 中课程是否存在

为什么要重写equals方法呢

新实例化的课程对象本来就不在courseToSelect集合中啊,contains方法当然会返回false,为什么非得重写equals方法让contains返回true呢?

提问者:fenkapian 2016-06-10 22:20

个回答

  • 予远方
    2016-06-11 15:54:51
    已采纳

    要看比较的目的了,是比较对象(引用)还是比较实际值了。

    默认equals在比较俩个对象的时候,是看他们是否指向同一个地址的。

    但有时候我们希望比较俩个对象的某些属性值是否相同,如果相同的话就认为他们的equals为true。

    比如:

    Student s1 = new Student(1,”name1”);
    Student s2 = new Student(1,”name1”);

    如果用默认的equals比较s1和s2 的话,结果肯定为false,但是我们只是希望

    比较他们的name是否相同,这个时候就需要重写equals方法了。


  • 慕粉2333013499
    2017-01-20 20:28:44

    其实我感觉不用contains方法,直接用course2.name==name  这个方法还简单粗暴