posted by 귀염둥이채원 2019. 4. 29. 14:45

# Enum이란?

1. 클래스처럼 보이게 하는 상수

2. 서로 관련있는 상수들끼리 모아 상수들을 대표할 수 있는 이름으로 타입을 정의하는 것

3. Enum 클래스 형을 기반으로 한 클래스형 선언 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
public enum DevelopType {
    MOBILE("안드로이드"), WEB("스프링"), SERVER("리눅스");
     
    final private String name;
 
    // enum에서 생성자 같은 역할
    private DevelopType(String name){
        this.name = name;
    }
    
    public String getName() {
        return name;
    }
}
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
enum ResourceType {
    CPU("CPU Usage""%"), 
    MEMORY("Memory Usage""%");
    
    final private String name;
    final private String value;
    
    private ResourceType(String name, String value) {
        this.name = name;
        this.value = value;
    }
    
    public String getName() {
        return name;
    }
    
    public String getValue() {
        return value;
    }
}
 
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class EnumTest {
    public DevelopType type;
 
    public static void main(String[] args){
        System.out.println("--------------------------");
        System.out.println(DevelopType.valueOf("MOBILE"));
        System.out.println(DevelopType.valueOf("MOBILE").getName());
         
        for(DevelopType type : DevelopType.values()){
            System.out.println(type.ordinal()+ " -> " +type +": " +type.getName());
        }
        
        System.out.println("--------------------------");
        for(ResourceType resource : ResourceType.values()){
            System.out.println(resource.ordinal()+ " -> " +resource +":" +resource.getName()+":"+resource.getValue());
        }
    }
}
cs


# 실행 결과

1
2
3
4
5
6
7
8
9
--------------------------
MOBILE
안드로이드
0 -> MOBILE: 안드로이드
1 -> WEB: 스프링
2 -> SERVER: 리눅스
--------------------------
0 -> CPU:CPU Usage:%
1 -> MEMORY:Memory Usage:%
cs


# 참고사이트

https://limkydev.tistory.com/66

https://opentutorials.org/module/1226/8025

https://www.w3schools.com/java/java_enums.asp