본문 바로가기
DEV Heart

[Java] enum class 상수선언

by 로띠 2021. 9. 27.

해당 포스팅은 https://mine-it-record.tistory.com/204 를 참고하였습니다

 

 

Q . enum class 란?

enumeration(열거형) type의 class형으로 보이게 상수를 선언

보통 밀접한 관계의 상수들을 enum에 모아서 정의한다

 


 

 

 

 

# 1. enum 의 특징

 

    - 열거형(enumeration)으로 선언 순서대로 0부터 index값을 갖게됨

    - 모두 대문자로 선언

    - 세미콜론(;)을 사용하지 않으나, 상수와 다른 값을 연결시킬 때 마지막에 세미콜론(;)

 

 

 


 

# 2. enum 의 선언

 

    - java 파일 선언

    - 클래스 내부, 외부 선언 

 


문법 : enum 열거체 이름 { 상수1, 상수2, ... }

코드 : enum Color { RED, PINK, BLUE, WHITE }

사용법 : Color.BLUE

 

 

 


 

# 3. enum 의 메소드()

 

 

Static  valueOf(String arg) String 값을 enum에서 가져온다. 값이 없으면 Exception 발생 
valueOf(Class<T> class, String arg)  넘겨받은 class에서 String을 찾아, enum에서 가져온다. valueOf(String arg)는 내부적으로 자기 자신의 class를 가져오는 것이다. 
values()  enum의 요소들을 순서대로 enum 타입의 배열로 리턴한다.
ENUM$VALUES의 카피이므로, 너무 자주 호출하는 것은 좋지 않음 
Static X name()  호출된 값의 이름을 String으로 리턴한다. 
ordinal() 해당 값이 enum에 정의된 순서를 리턴한다. (index 값 리턴)
compareTo(E o)  이 enum과 지정된 객체의 순서를 비교한다. 지정된 객체보다 작은 경우 음의 정수, 동일하면 0, 크면 양의 정수를 반환한다. 
equals(Object other)  지정된 객체가 이 enum 정수와 같은 경우, true를 반환한다. 

 

    - 주로 valueOf, values(), ordinal() 을 많이 쓴다고 한다

 

 

 

 


 

 

# 4. enum 의 예제

 

 

 1. enum 선언

    - 상수와 다른 값을 연결시키려면 리턴 함수가 선언되어있어야한다

 

  Color.java

public enum Color { 

    RED("빨강"),
    PINK("분홍"),
    BLUE("파랑"),
    WHITE("하얀");
    
    private final String value;
    
    Color(String value){ 
    this.value = value; 
    } 
    
    public String getValue(){ 
    return value; 
    } 
}

 

 


 

 

 

 2. enum 상수와 연결된 값 가져오기 ( for 문 )

    - 상수와 다른 값을 연결시키려면 리턴 함수가 선언되어있어야한다

 

  TestEnum.java

public class TestEnum { 

	public static void main(String[] args) { 
    
    	for(Color color : Color.values()){
        	System.out.println(color.getValue()); // 빨강,분홍,파란,하얀
        }
        
        System.out.println(Color.BLUE.getValue()); // 파란
    }
}

 

 


 

 

 

 3. enum 선언된 상수 모두와 index값 ( for 문 )

 

 

    values() : enum에 선언된 상수를 전부 가져온다. (예제 출력을 위해 for문에 사용)

    ordinal() : 해당 상수의 index값을 출력한다.

 

  TestEnum.java

public class TestEnum {

	public static void main(String[] args) {
    	
        for(Color color : Color.values()){
        	System.out.println(color); // RED,PINK,BLUE,WHITE
        }
        
        System.out.println(Color.BLUE.ordinal()); //2
    }
}

 

 


 

 

 

 4. enum 선언된 상수 모두와 index값 ( for 문 )

 

 

    values() : enum에 선언된 상수를 전부 가져온다. (예제 출력을 위해 for문에 사용)

    ordinal() : 해당 상수의 index값을 출력한다.

 

  TestEnum.java

public class TestEnum {

	enum Color { RED, PINK, BLUE, WHITE }
    
    public static void main(String[] args) {
    
    	int test = 1;
        
        if(test == 1){
        	switchFt(Color.WHITE);
    }...
            
    public static void switchFt(Color color){
    	
        switch(color){ 
        case RED :
        	System.out.println("RED 입니다.");
        	break;
        case PINK : 
        	System.out.println("PINK 입니다.");
            break; 
        case BLUE :
        	System.out.println("BLUE 입니다.");
            break;
        case WHITE :
        	System.out.println("WHITE 입니다.");
            break; 
        }
    }
}

 

 

 

 

오케이. 열심히 공부했다...

끝!