Java의 Enum은 완전한 기능을 갖춘 클래스이다.
변하지 않는 값, 상수를 사용하기 위한 개념
단순 0,1,value1,value2을 사용했을때 의미하는바를 알 수 없다.
int value1 = 0;
정의한 코드를 찾지 않는이상 어떤값을 의미하는지 알 수 없다.
final int APPLE = 1;
final int BANANA = 2;
final int GOOGLE = 3;
final int APPLE = 4;
error : 상수는 불변, 종단 변하지 않는값이다.
final int FRUIT_APPLE = 1;
final int COMPANY_APPLE =4;
interface FRUIT{ int APPLE = 1;} > FRUIT.APPLE
interface COMPANY{ int APPLE = 4;} > COMPANY.APPLE
상수의 충돌을 해결할 수 있다.
class Fruit{ public static final Fruit APPLE = new Fruit();}
class Company{ public static final Company APPLE = new Company;}
데이터 타입 FRUIT를 가지고 있는 상수, 인스턴스 APPLE
데이터 타입 COMPANY를 가지고 있는 상수, 인스턴스 APPLE
Fruit APPLE != Company APPLE
Enum(열거형) : 서로 연관된 상수들의 집합
Enum에 존재하는 상수는 묵시적으로 public static final이다.
1. 코드의 간결화 : 복합하게 작성해야하는 클래스 참조상수를 간단하게 작성할 수 있다.
2. 인스턴스 생성과 상속을 방지한다.
3. 키워드 enum을 사용하기 때문에 구현의 의도가 열거임을 분명하게 나타낼 수 있다.
enum Fruit{ APPLE, PEACH, BANANA; }
==
class Fruit{
public static final Fruit APPLE = new Fruit();
public static final Fruit PEACH = new Fruit();
public static final Fruit BNANA = new Fruit();
}
Enum내 존재하는 상수 APPLE, PEACH, BANANA는 Enum클래스이다.
Fruit type = Fruit.APPLE;
switch(type){
case APPLE: break;
case PEACH: break;
case BANANA: break;
}
Enum Fruit의 참조형 변수 type에 인스턴스 APPLE을 대입하고 조건절을 사용할 수 있다.
enum Fruit{
APPLE("red",1),
PEACH("pink",2),
BANANA("yellow",3);
public String color;
public int num;
Fruit(String color, int num){
this.color = color;
this.num = num;
}
}
1)생성자만 사용한 경우
Fruit.APPLE.color.equals("red") == true
Fruit.PEACH.color.equals("pink") == true
Fruit.BANANA.color.equals("yellow") == true
Fruit.APPLE.num == 1
Fruit.PEACH.num == 2
Fruit.BANANA.num == 3
2) Getter존재 시
Fruit.APPLE.getColor() -> return : red
Fruit.PEACH.getColor() -> return : pink
Fruit.BANANA.getColor() -> return : yellow
3)Enum의 상수 값 출력
public static void main(String[] args){
for(Fruit f : Fruit.values()){
System.out.print(f);
}
}
Console : APPLE, PEACH, BANANA
출처: 생활코딩 유튜브
출처 : https://www.topjavatutorial.com/
출처 : 우아한형제들 기술블로그