contains 메소드 실행시, 프로그램 내부적으로는 .equals() 동등비교가 진행된다.
.equals()를 오버라이딩 하는 구문은 다음과 같다.
public boolean equals(Object obj) {
return (this == obj);
}
.equals()를 호출하면 Object 클래스에 있는 equals()가 호출 된다.
다음과 같은 코드로 기술된다.
.equals() 메소드는 기본적으로 주소값 동등비교를 진행된다.
하지만 우리가 원하는 것은 주소값 동등비교가 아닌 문자열 동등 비교이기 때문에,
따라서 Music 클래스에 equlas메소드를 오버라이딩을 해야한다.
@Override
public boolean equals(Object obj){
Music other = (Music)obj;
if(this.title.equals(other.title) && this.artist.equals(other.artist)) {
return true;
} else {
return false;
}
}
다시 실행을 해보면, 올바른 결과값이 나오는 것을 확인할 수 있다.
728x90
'🚨 Error > JAVA' 카테고리의 다른 글
[JDBC ] ClassNotFoundException (0) | 2021.03.31 |
---|---|
[JAVA] Collection _ 도서 검색용 View 메소드 작성 (0) | 2021.03.19 |
[JAVA] Collection 실습 문제 2. 존재하는 도서가 없습니다. (0) | 2021.03.09 |
[JAVA] 박수박수 문제 (0) | 2021.03.03 |
[JAVA] The method information() is undefined for the type ArrayList<Employee> (0) | 2021.03.02 |
댓글