본문 바로가기
728x90

Java18

[Java] 자바에서 Optional의 올바른 사용법 개요개발을 하면서 가장 많이 만나는 예외 중 하나가 NullPointerException(NPE)이다. 특히 객체가 null일 때 이를 처리하지 않고 사용하면 프로그램이 예기치 않게 종료될 수 있다. 최근에 내가 작업하던 프로젝트에서도 이런 상황을 여러 번 마주쳤다. 이를 해결하기 위해 Optional을 활용해 NPE를 방지하고자 했지만, Optional의 잘못된 사용법을 보고 오히려 코드가 복잡해지는 경우도 경험했다. 그래서 이번 글에서는 자바의 Optional을 올바르게 사용하는 방법과 피해야 할 안티패턴을 설명하고자 한다. Optional이란 무엇인가? Optional은 자바 8에서 추가된 클래스다. 이 클래스는 값이 있을 수도 없을 수도 있는 객체를 감싸서 NPE를 방지하는 역할을 한다. 기본적으.. 2024. 9. 24.
[Java] 공통 적용 JsonDeserializer 만들어 보기 개요외부 api와 통신하여 작동하는 기능 개발 시, 외부에서 리턴되는 상태 코드 등을 애플리케이션 내부에서 사용하려고 하면 해당 코드를 활용하는데 어려움을 겪고는 한다. 아래는 카카오톡 비즈메시지 센터 API 중, 알림톡 템플릿 정보 조회 결과에 대한 리턴값 중 일부이다.  위와 같이 검수 결과가 REG, REQ 등과 같은 한 눈에 의미를 알 수 없는 약어로 축약되어 리턴되는데, 이를 애플리케이션 내부에서 원활하게 사용하기 위해서는 Enum을 선언하고 외부 api 결과값을 해당 Enum에 매핑하여 사용할 수 있다. public interface KakaoCommonType { T getCode(); String getTitle();}@RequiredArgsConstructorpublic en.. 2024. 9. 23.
[Java] UUID를 이용한 고유 식별자 생성 개요개발 프로젝트에서 데이터베이스의 각 레코드를 고유하게 식별해야 하는 경우가 많다. 일반적으로는 자동 증가하는 숫자형 ID를 사용하는 경우가 많지만, 분산 시스템이나 여러 서비스가 동시에 데이터베이스에 접근하는 환경에서는 고유성이 보장되는 UUID(Universally Unique Identifier)가 더 적합한 경우가 많다. 이번 프로젝트에서도 여러 서버에서 고유한 식별자를 생성해야 했기에, UUID를 사용하는 방법을 찾아보게 되었다.  UUID란 무엇인가? UUID는 Universally Unique Identifier의 약자로, 전 세계적으로 고유한 식별자를 생성하는 데 사용된다. UUID는 128비트 길이의 숫자로 이루어져 있으며, 36자리의 문자열로 표현된다. 아래는 UUID의 일반적인 형식.. 2024. 9. 22.
자바 StringBuilder와 StringBuffer는 뭐가 다를까? 개요최근 개발을 하며 문자열을 여러 개 이어붙일 일이 있었는데, 기존 코드를 보니 StringBuilder를 많이 사용하는것을 볼 수 있었다. 하지만 해당 프로젝트 외에 다른 프로젝트에서는 StringBuffer를 사용해서 문자열을 이어 붙였었는데 두 클래스간 어떤 차이가 있을지 궁금하여 비교해서 정리하려고 한다. StringBuilder와 StringBuffer일단 StringBuilder와 StringBuffer는 모두 문자열을 수정할 수 있는 가변 클래스이다. 둘 다 문자열을 효율적으로 처리할 수 있도록 설계되었으나, 사용 목적에 따라 선택해야 한다. 두 클래스의 대표적인 큰 차이는 아래와 같다. 동기화(Synchronization) 여부StringBuilder: 동기화되지 않은 클래스. 멀티스레드.. 2024. 9. 20.