[Java] 객체 타입의 equals

김태훈·2023년 8월 3일
0

String 타입에서의 equals는 값을 비교할 수 있다.
다음은 java.lang 의 String class의 equals 메서드이다.

	public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        } else {
            boolean var10000;
            if (anObject instanceof String) {
                String aString = (String)anObject;
                if ((!COMPACT_STRINGS || this.coder == aString.coder) && StringLatin1.equals(this.value, aString.value)) {
                    var10000 = true;
                    return var10000;
                }
            }

            var10000 = false;
            return var10000;
        }
    }

byte 값을 비교하는 것으로 보아, 직접 객체의 값에 접근하여 '값'자체를 비교하는 것을 알 수 있다.

클래스 타입형의 객체 데이터일 경우에는 주소값을 비교하므로, 클래스간의 값의 비교는 equals로 하면 안된다.

하고 싶으면, 클래스에서 equals를 직접 override할 것

@AllArgsConstructor
@NoArgsConstructor
@Builder
@Getter
public class CodeCheckDto {
    @Email
    @NotEmpty(message = "이메일을 입력해 주세요")
    private String email;

    @NotEmpty(message = "인증 번호를 입력해 주세요")
    private String code;

    @Override
    public boolean equals(Object o){
        if(this ==o) return true;
        if(o == null || this.getClass()!= o.getClass()) return false;
        CodeCheckDto codeCheckDto = (CodeCheckDto) o;
        return Objects.equals(email,codeCheckDto.email) && Objects.equals(code,codeCheckDto.code)
    }
}
profile
기록하고, 공유합시다

0개의 댓글