728x90
반응형
enum의 개념
enum은 열거형(enumerated type)이라고 부른다. 열거형은 서로 연관된 상수들의 집합이다. (상수값은 변수와 다르지 않게 변하지 않는값을 갖는것이다.)
enum을 사용하는 이유
- 코드의 단순화
- 인스턴스 생성과 상속을 방지
- 키워드 enum을 사용하기 때문에 구현 의도가 열거임을 분명하게 나타낼 수 있다.
- 기존 코드보다 짧으면서 더 많은 기능을 구현할 수있다.(필드, 메소드 생성)
- class로 선언을 하면, 각각의 멤버들을 배열처럼 하나씩 꺼내서 사용 할 수 없다. enum에서는 이런 단점을 보완 할 수있다.
enum활용 예시
* eunm을 활용해야하는 이유
아래 예시는 색깔들의 집합과 크기들의 집합을 상수로 선언한 코드의 예시이다. 색에서 RED, GREEN, GRAY를 각각 1,2,3의 값으로 고정해주고, 가수에서는 GRAY, SOLAR, IU를 1,2,3으로 해줬다.
그런데, 이 코드에서는 가수들의 집합 GRAY에서 오류가 나게 된다. 왜냐, 이미 색에서 그레이를 상수로 사용했기 때문이다.
public class EnumPractice {
public static void main(String[] args) {
//색깔들의 집합
final int RED = 1;
final int GREEN = 2;
final int GRAY = 3;
//가수들의 집합
//이미 그레이는 상수로 선언되어서 에러
final int GRAY = 1;
final int SOLAR = 2;
final int IU = 3;
}
이런 오류를 해결하기 위해선 아래와 같이 코드를 짜야한다.
순식간에 코드가 길어지고 같은부분을 반복하고 복잡해졌다.
public class EnumPractice {
public static void main(String[] args) {
class Colour {
public final Colour RED = new Colour();
public final Colour GREEN = new Colour();
public final Colour GRAY = new Colour();
}
class Singer {
public final Singer GRAY = new Singer();
public final Singer SOLAR = new Singer();
public final Singer IU = new Singer();
}
}
}
enum을 사용하면 바로 위의 코드를 아래와 같이 줄일 수 있다.
단순 열거형으로 내부에 상수명만 있을 경우 마지막에는 세미콜론(;)은 생략된다.
public class EnumPractice {
public static void main(String[] args) {
enum Colour{
//세미콜론 생략
RED, GREEN, GRAY
}
enum Singer{
//세미콜론 생략
GRAY, SOLAR, IU
}
}
}
enum에서 필드와 메서드 생성하기
public class EnumPractice {
public static void main(String[] args) {
enum Colour{
RED("red"), GREEN("green"), GRAY("gray");
private final String colour;
private Colour(String colourName){
this.colour = colourName;
}
public String getColour(){
return colour;
}
}
enum Singer{
GRAY("gray"), SOLAR("solar"), IU("iu");
private final String singer;
private Singer(String singerName){
this.singer = singerName;
}
public String getSinger(){
return singer;
}
}
Singer singer = Singer.GRAY;
Colour colour = Colour.GREEN;
System.out.println(singer.getSinger() + "가" + colour.getColour() +"색의 옷을 입었다." );
}
}
실행 결과값
gray가green색의 옷을 입었다.
반응형
'JAVA' 카테고리의 다른 글
[개발지식] HTTP API, CSR, SSR의 정의 및 특징 (0) | 2023.01.20 |
---|---|
[Java | Stream] 자바 스트림 filter, 합계 (Sum) , List 출력하기 예제 (0) | 2022.12.23 |
[Java | 웹개발] @JsonFormat 어노테이션 사용으로 Date 형식 바꾸기 / 시간 서울기준으로 맞추기 (0) | 2022.11.18 |
[Java] Array, ArrayList, HashMap 사용법, 데이터 출력법, 차이점 (0) | 2022.11.04 |
[Java] Math.random()을 이용한 주사위 두개 굴리기 예제 (1) | 2022.11.01 |