Wrapper 클래스 비교 문제
💬 equals와 "=="의 비교는 정확히 알고 있다고 생각하고 있었습니다. 그런데 이번에 "== " 비교로 인해 문제가 발생하고 있는 코드를 마주하게 되었습니다.
✔ 문제
💢 아이디어에 대한 권한을 체크하기 위해 현재 유저 ID와 아이디어 작성 유저 ID를 비교를 했습니다. 근데 두 타입은 Long인데 비교를 "=="를 사용했습니다. "==" 비교는 참조 타입의 경우 주소를 비교하기 때문에 실제 값을 비교해야 하는 경우 문제가 발생합니다.
userId == idae.getUser().getId();
✔ 해결
✅ Long 타입의 eqauls는 실제 값을 비교한다는 것을 확인했습니다. 그래서 "=="을 equals로 변경해서 해결했습니다.
1. Long equals 메서드
public boolean equals(Object obj) { if (obj instanceof Long) { return value == ((Long)obj).longValue(); } return false; }
2. 수정 코드
userId.eqauls(idea.getUser().getId());
생각
알고 있는 지식이어도 사람은 실수를 할 수 있습니다. 이러한 실수를 줄이기 위해 코드를 작성할 때 끊임없이 생각을 해야 합니다. 다시 한번 스스로를 다짐하는 시간이었습니다.
'개발일지 > TIL' 카테고리의 다른 글
[230808] Polling, SSE, WebSocket ? (0) | 2023.08.08 |
---|---|
[230807] Java Security AutoConfigure가 될 때 Https Port 매핑 (1) | 2023.08.07 |
[230805] [파이널] 프로젝트 진행 (4) (0) | 2023.08.05 |
[230804] [파이널] 프로젝트 진행 (3) (0) | 2023.08.04 |
[230803] [파이널] 프로젝트 진행 (2) (0) | 2023.08.03 |