프로젝트/크루트

간과하기 쉬운 자바 문법

발전생 2022. 3. 5. 21:29

자바 문법은 원시 타입의 래퍼 객체가 있다. 

long을 감싸주는 Long 클래스, 

int를 감싸주는 Integer 클래스 기타 등등. 많다.

 

래퍼 객체는 저장된 원시 타입의 값이 같은 지 비교할 때 ==이 아닌 equals를 써야만 한다.

원시 타입 래퍼 클래스 또한 클래스이기 때문에 == 비교 시 주소를 가지고 비교하게 된다.

 

여러 언어를 자주 사용한다면 헷갈리기 쉬운 문법이다. 

 

프로젝트 개발 도중에도 session에 저장된 유저의 id와 수정하려는 프로젝트의 제안자 id를 비교할 때 ==을 썼었다. 하지만 저기 getId()의 반환 타입이 Long이라는 함정.

 if (targetProject.getProposer().getId() != sessionUser.getId()) {
    throw new NotPermitException();
}