Enum class - 생성자

Lily·2024년 3월 3일
2
post-thumbnail

우테코 사다리 게임 미션을 진행하다가 코드 리뷰해주시는 리뷰어분께서 까먹은(😅) 접근제어자를 지적해주셔서 찬찬히 모든 메서드를 살펴보다가 문득 Enum 생성자의 접근제어자가 생략되어있는 것을 발견했다

🧐 Enum class 생성자의 접근제어자는 오로지 private ?

공식 문서 등을 살펴보면, enum type 생성자의 접근제어자는 오직 private 만 가능하다고 한다.
왜 인지를 알기위해선 Enum 이 무엇인지를 정확히 알고 있어야하는데,

Enum 은 서로 연관된 상수들의 집합이다.

따라서 다른 패키지나 클래스에서 enum 에 접근해 동적으로 어떤 값을 정해줄 수 없어야 한다.
-> java 는 컴파일타임에 모든 값을 알고 있게 함으로써 타입 안정성을 보장해주고 있다.

이 때문에 enum 은 외부에서 접근 가능한 생성자가 없으므로 인스턴스 생성 및 상속이 불가능 한 것이다.

😯 위 내용과 연결되는 Enum 의 장점

위 내용을 이해했다면 자연스레 함께 이해되는 내용들인 것 같다!

  1. 허용 가능한 값들을 제한하여 유형 안전(type safe)을 제공한다.
  2. 인스턴스 생성과 상속을 방지한다.
  3. 코드의 가독성이 좋아진다.
  4. 구현의 의도가 열거임을 분명하게 나타낼 수 있다.
profile
내가 하고 싶은 거

4개의 댓글

comment-user-thumbnail
2024년 3월 4일

Enum의 생성자 접근 제어자라니 정말 고민해 본 적 없는 내용이네요 유익한 글 감사해요!

답글 달기
comment-user-thumbnail
2024년 3월 4일

인스턴스 생성 및 상속이 불가능해서 객체를 싱글턴으로 만들 때도 유용하게 활용할 수 있습니다 👍 잊고 있던 유용한 개념이예요 굿굿

답글 달기
comment-user-thumbnail
2024년 3월 4일

생각 못했던 부분인데 enum에 대해 한번 더 생각해보게되네요! 특히 1번 장점을 잘 활용하면 명확한 코드를 작성할 수 있을것같아요!!

답글 달기
comment-user-thumbnail
2024년 3월 6일

'인스턴스 생성 및 상속이 불가능' 특징을 잘 생각해서 써야겠네요! 지나칠 수 있는 개념이었는데, 덕분에 한 번 더 짚고 갑니다👍

답글 달기

관련 채용 정보