이번 유니톤 10기의 해커톤대회를 진행하며, 상당히 어이없는 에러를 일으켰었다.
로직중 Server-Sent-Events를 구현하는데 있어, 전략으로 SseEmitter를 선택하였고 한 유저당 하나의 객체를 세션에 저장시키기위해 ConcurrentHashMap을 사용하여 유저의 닉네임(PK값)과SseEmitter 객체를 매핑시켜 관리하였다.
이중 중복 저장을 방지하기 위하여 아래와 같은 유효성 검사 로직을 작성하였는데, 해당 메서드의 반환타입이 Boolean 즉, Wrapper 클래스타입인게 문제였다.
그렇기에 조건문에 Null이 허용되어, 조건문에서 NPE가 발생하는 경우가 생겨버렸다.
당연하게도 원시타입으로 바꾸어 간단히 해결할 수 있는 Trouble이었지만, 객체로서 사용하지않아도 됐다는 점에서 무분별한 Wrapper 클래스의 남발은 적합하지 못한 코드였다고 생각된다.
결론
객체으로서의 활용(제네릭에서의 사용이나 null허용 또는 객체로서 메서드를 활용해야할 경우)이 필요하지 않다면 Wrapper 클래스를 남발하지 말자..
'Java' 카테고리의 다른 글
==, equlas() (0) | 2024.01.04 |
---|---|
equals()와 hashCode() (1) | 2024.01.03 |
HashTable vs ConcurrentHashMap (3) | 2023.12.26 |
[Java] Record 와 스프링에서의 사용 (1) | 2023.11.11 |
[Java] DTO를 recode 타입으로 사용 (0) | 2022.10.23 |