Study/Java
equals 메소드를 오버라이딩 하기.
유쾌한순례자
2010. 11. 11. 22:11
그냥 String a = "aaa";
String b="aaa";
a.equals(b) 는 같다고 나오지만
String a = new String("aaa");
String b = new String("aaa");
a.equals(b) 는 false를 반환한다.
이럴 때에는 equals 메소드를 오버라이딩 해준다.
이제 Effective JAVA 에 항목 8 'equals 메소드를 오버라이딩 할 때는 보편적 계약을 따르자' 참고해서 공부해야겠다.
String b="aaa";
a.equals(b) 는 같다고 나오지만
String a = new String("aaa");
String b = new String("aaa");
a.equals(b) 는 false를 반환한다.
이럴 때에는 equals 메소드를 오버라이딩 해준다.
class Quiz {
private final String answer;
public Quiz(String answer){
this.answer=answer;
}
@Override
public boolean equals(Object obj) {
if((obj instanceof Quiz)&& obj != null ) {
return answer ==((Quiz)obj).answer;
} else {
return false;
}
}
}
public class eqtest {
public static void main(String[] args)
{
Quiz q1 = new Quiz("테스트중입니다");
Quiz q2 = new Quiz("테스트중입니다");
if(q1==q2){
System.out.println("같다");
}else{
System.out.println("다르다");
if(q1.equals(q2)){
System.out.println("같다");
}else{
System.out.println("다르다");
}
}
}
결과
다르다
같다
private final String answer;
public Quiz(String answer){
this.answer=answer;
}
@Override
public boolean equals(Object obj) {
if((obj instanceof Quiz)&& obj != null ) {
return answer ==((Quiz)obj).answer;
} else {
return false;
}
}
}
public class eqtest {
public static void main(String[] args)
{
Quiz q1 = new Quiz("테스트중입니다");
Quiz q2 = new Quiz("테스트중입니다");
if(q1==q2){
System.out.println("같다");
}else{
System.out.println("다르다");
if(q1.equals(q2)){
System.out.println("같다");
}else{
System.out.println("다르다");
}
}
}
결과
다르다
같다
이제 Effective JAVA 에 항목 8 'equals 메소드를 오버라이딩 할 때는 보편적 계약을 따르자' 참고해서 공부해야겠다.