자바 문법은 원시 타입의 래퍼 객체가 있다.
long을 감싸주는 Long 클래스,
int를 감싸주는 Integer 클래스 기타 등등. 많다.
래퍼 객체는 저장된 원시 타입의 값이 같은 지 비교할 때 ==이 아닌 equals를 써야만 한다.
원시 타입 래퍼 클래스 또한 클래스이기 때문에 == 비교 시 주소를 가지고 비교하게 된다.
여러 언어를 자주 사용한다면 헷갈리기 쉬운 문법이다.
프로젝트 개발 도중에도 session에 저장된 유저의 id와 수정하려는 프로젝트의 제안자 id를 비교할 때 ==을 썼었다. 하지만 저기 getId()의 반환 타입이 Long이라는 함정.
if (targetProject.getProposer().getId() != sessionUser.getId()) {
throw new NotPermitException();
}
'프로젝트 > 크루트' 카테고리의 다른 글
spring boot + aws s3 (0) | 2022.03.09 |
---|---|
nuxt에서 vue 파일에 name을 사용하는 건 의미가 없다 (0) | 2022.03.06 |
CascadeType.REMOVE와 orpahnRemoval=True (0) | 2022.02.21 |
@Entity 적용한 클래스에 getter가 없으면 jackson이 파싱을 못 하셔 (0) | 2022.02.21 |
jpa 사용 시 양방향 연관 관계에 모두 @JsonIgnore 처리 (0) | 2022.02.18 |