일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 윈도우키보드
- http 413
- Infra
- body size
- gitops
- 디자인패턴
- AWS
- 오블완
- 배포 프로세스
- Buffered channel
- 대규모 시스템 설계
- 티스토리챌린지
- GoF
- go
- apollo router
- 배포 파이프라인
- elasticsearch
- m4 pro
- 사설 ip
- 코사인 유사성 메트릭스
- golang
- Logrus
- intellij ide
- notification system
- kube-prometheus-stack
- Intellij
- Kubernetes
- UnBuffered channel
- goland
- cosine similarity metric
Archives
- Today
- Total
Fall in IT.
타입에 안전한 열거형 enum 본문
반응형
오늘은 jdk 1.5에서 추가된 enum에 대해 알아보겠습니다.
enum의 정의
- 배열 : 서로 연관된 값들의 집합
- 열거형(enumerated type) : 서로 연관된 상수들의 집합
enum의 특징
- 코드가 단순해진다.
- 인스턴스 생성과 상속을 방지한다.
- enum 객체를 new를 통해 인스턴스를 생성을 막아주고, 생성자의 접근제어자를 private으로 설정 하지 않을 시 컴파일 에러가 발생한다. - 의미를 명확히 할 수 있다.
- class 대신 enum을 사용함으로써 구현 의도를 명확히 나타낸다. - 자바의 enum은 C언어의 열거형보다 더 향상된 개념의 열거형으로 값뿐만 아니라 타입까지 관리하기 때문에 컴파일시 오류를 줄일 수 있다.
- 아래의 School.MIDDLE 값과 Level.SILVER 를 비교할 경우 값은 같은 2이지만 타입이 다르므로 컴파일시 컴파일 에러를 나타낸다.
enum Level
{
BASIC(1), SILVER(2), GOLD(3)
}
- 또한, School.valueOf()메소드 사용시,1,2,3 이외의 값 사용시 에러처리를 할 수 있다.
enum 샘플코드
public enum School
{
ELEMENTARY(1), MIDDLE(2), HIGH(3); // 3개의 enum 오브젝트 정의 (초,중,고)
private final int value;
School(int value) //DB에 저장할 값을 넣어줄 생산자를 만들어 둔다.
{
this.value = value;
}
public int intValue()
{
return value;
}
public static School valueOf(int value) //매개변수로 들어오는 int값에 따라 학년(?)값 반환
{
switch(value)
{
case 1 : return ELEMENTARY;
case 2 : return MIDDLE;
case 3 : return HIGH;
default : throw new AssertionError("Unknown value : " + value);
}
}
}
모두 즐거운 코딩 하세요~
반응형
'프로그래밍언어 > Java' 카테고리의 다른 글
static 잘 활용하기 (0) | 2016.03.08 |
---|---|
StringBuffer와 StringBuilder의 차이점 (0) | 2016.03.03 |
for문(반복문) 사용시 조심해야할 점 (0) | 2016.03.02 |
ByteArray를 이미지 파일로 저장하는 방법 (4) | 2016.02.28 |
인터페이스란? (0) | 2016.01.31 |
Comments