public enum Singleton {
INSTANCE;
public void doSomething() {
// 실행 코드
}
}
- 스레드 안전성 기본 제공
- enum은 자바에서 기본적으로 스레드에 안전한 구조이므로 별도의 동기화 코드를 추가하지 않아도 됩니다.
- 직렬화 간편화
- enum 싱글톤은 기본적으로 직렬화와 역직렬화 과정에서 단일 인스턴스가 유지됩니다. 별도의 readResolve 메서드를 구현할 필요가 없습니다.
- 코드 간결성
- enum을 사용하면 간단한 구문으로 싱글톤을 정의할 수 있어 코드가 더 읽기 쉽고 유지보수하기 용이합니다.
- 리플렉션 안전
- 리플렉션을 통해 여러 인스턴스를 만들기 어렵습니다. enum은 클래스 로더에 의해 단일 인스턴스로 관리되므로 기본적으로 리플렉션 공격에도 안전합니다.