重写equals方法,怎么显示还是false

来源:6-1 学生选课---判断 List 中课程是否存在

山巅对弈

2017-09-01 11:05

public boolean equals(Object obj){

if(this == obj){

return true;

}

if(obj == null){

return false;

}

if(!(obj instanceof Course))

return false;

Course course = (Course)obj;

if(this.name == null){

if(course.name == null)

return true;

else

return false;

}else{

if(this.name.equals(course.name))

return true;

else

return false;

}

}


下一个代码:

public void testListContains(){

Course course = couresToSelect.get(0);

System.out.println(couresToSelect.contains(course));

Course course2 = new Course(course.id,course.name);

System.out.println(couresToSelect.contains(course2));

}


写回答 关注

2回答

  • Justeasy
    2017-09-01 16:25:53
    已采纳

    自己试了一下你的代码,发现都没有错,返回的是True.....,可能是你coursesToSelect里的集合元素有问题,建议检查一下

    慕仰8901... 回复山巅对弈

    你的问题找到了么 我跟你一样的问题。。。。

    2017-09-25 11:03:27

    共 3 条回复 >

  • 不脱发的小Java
    2017-09-05 11:09:38

    public boolean equals(Object obj){

        if(this==obj)

        return true;

        if(obj==null)

        return false;

        if(!(obj instanceof Course))

        return false;

        Course course=(Course)obj;

        if(this.name==null){

        if(course.name==null)

            return true;

        else

            return false;

        }else{

            // if(this.name==course.name)

        if(this.name.equals(course.name))

            return true;

        else

            return false;

        }

    }



    你equals方法重写的有问题 你试试这个

Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409792 学习 · 4340 问题

查看课程

相似问题