ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] Enum 클래스
    Study/Java 2021. 5. 16. 17:06

    열거체 (enumeration type)

    java 언어 열거 유형의 공통 기본 클래스

    집합의 유형 또는 맵의 키 유형으로 열거 유형을 사용가능

    E: 열거형 하위 클래스

    java 1.5 이후

     

    Enum 클래스는 모든 자바 열거체의 공동된 조상 클래스.

    Enum 클래스에는 열거체를 조작하기 위한 다양한 메소드가 포함되어 있음


    장점

    1. 열거체를 비교할 때 실제 값뿐만 아니라 타입까지도 체크 가능

    2. 열거체의 상수값이 재정의되더라도 다시 컴파일할 필요가 없음


    사용법

    클래스 생성

    1) 우클릭 > New > Enum

    2) 우클릭 > New > Other... > Enum

    문법

    // 선언
    enum 열거체이름 {
    	상수1이름
        , 상수2이름
        , ...
    }
    
    // 사용법
    열거체이름.상수이름

     

    예시

    // Enum 클래스 생성
    public enum Fruit {
    	APPLE
    	, BANANA
    	, WATERMELON
    }
    
    public class EnumClassMain {
    	public static void main(String[] args) {
    		// 호출
    		System.out.println(Fruit.WATERMELON);
    	}
    }

    열거체의 상숫값 정의

    기본으로 정의된 열거체는 첫번째 상숫값은 0부터 설정되며, 1씩 증가되며 설정

     

    불규칙한 값을 상수값으로 설정하고 싶을 경우 상수의 이름 옆에 괄호(())를 추가하고, 그 안에 상수값을 명시할 수 있음

    불규칙한 특정값을 저장할 수 있는 인스턴스 변수와 생성자를 별도로 추가해야함

     

    예시

    public enum Color {
    	RED(1)
    	, BLUE(4)
    	, GREEN(3)
    	, YELLOW(2)
    	, BLACK(5);
    	
    	private final int value;
    
    	Color(int value) { 
    		this.value = value; 
    	}
    
        public int getValue() { 
        	return value; 
        }
    }

    values() 메소드

    해당 열거체의 모든 상수를 저장한 배열을 생성하여 반환

    자바의 모든 열거체에 컴파일러가 자동으로 추가해주는 메소드

    문법

    static E vlaues()

    예시

    public enum Fruit {
    	APPLE
    	, BANANA
    	, WATERMELON
    }
    
    public class EnumClassMain {
    	public static void main(String[] args) {
    		Fruit[] arr = Fruit.values();
            for (Fruit one : arr) {
                System.out.println(one);
            }
    	}
    }

    실행결과

    APPLE
    BANANA
    WATERMELON

    valueOf() 메소드

    전달된 문자열과 일치하는 해당 열거체의 상수 반환

    문법

    static E valueOf(String name)

    예시

    public enum Fruit {
    	APPLE
    	, BANANA
    	, WATERMELON
    }
    
    public class EnumClassMain {
    	public static void main(String[] args) {
            Fruit fruit = Fruit.valueOf("APPLE");
            System.out.println(fruit);
    	}
    }

    실행 결과

    APPLE

    ordinal() 메소드

    해당 열거체 상수가 열거체 정의에서 정의된 순서(0부터 시작)를 반환

    이때 반환되는 값은 열거체 정의에서 해당 열거체 상수가 정의된 순서이며 상숫값 자체가 아님!

    문법

    int ordinal()
    public enum Color {
    	RED(1)
    	, BLUE(4)
    	, GREEN(3)
    	, YELLOW(2)
    	, BLACK(5);
    	
    	private final int value;
    
    	Color(int value) { 
    		this.value = value; 
    	}
    
        public int getValue() { 
        	return value; 
        }
    }
    
    public class EnumClassMain {
    	public static void main(String[] args) {
            int index = Color.RED.ordinal();
            System.out.println(index);
    		System.out.println(Color.RED.getValue()); // 지정해둔 상수값 호출 방법
    	}
    }

    실행 결과

    0

    열거체 상수가 정의된 순서이므로 상숫값 1이 아닌 0이 반환됨.


    name() 메소드

    해당 열거체 상수의 이름 반환

    public enum Fruit {
    	APPLE
    	, BANANA
    	, WATERMELON
    }
    
    public class EnumClassMain {
    	public static void main(String[] args) {
            String name = Fruit.APPLE.name();
            System.out.println(name);
    	}
    }

    실행 결과

    APPLE
Designed by Tistory.