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)
}
}