Enum

배세훈·2021년 8월 23일
0

java

목록 보기
4/16

Enum이란?

  1. 클래스처럼 보이게 하는 상수
  2. 서로 관련있는 상수들끼리 모아 상수들을 대표할 수 있는 이름으로 타입을 정의하는 것
  3. Enum 클래스 형을 기반으로 한 클래스형 선언

Enum을 이용한 열거형 선언하기

  • Enum Class는 다른 클래스와 마찬가지로 별도의 java파일, 클래스 안, 클래스 밖 선언 가능

1) 별도의 java 선언

// DevType.java

public enum DevType{
	MOBILE, WEB, SERVER
}

2) Class 내부에서 선언

// Developer.java

public class Developer {
	public String name;
    public int career;
    public enum DevType{
    	MOBILE, WEB, SERVER
    }
}

3) Class 외부에서 선언

// Developer.java

public class Developer{
	public String name;
    public int career;
    public DevType type;
}

enum DevType{
	MOBILE, WEB, SERVER
}

특징

  • 열거형으로 선언된 순서에 따라 0부터 인덱스 값을 가진다. 순차적으로 증가한다.
  • enum 열거형으로 지정된 상수들을 모두 대문자로 선언
  • 마지막에 열거형 변수들을 선언한 후 세미콜론(;)을 찍지 않는다.
  • 열거형 상수와 관련된 값을 생성자를 통해 연결시킬 경우 세미콜론(;)을 붙여야 함

Enum Class 사용하기

public class Developer{
	public String name;
    public DevType type;
    
    public static void main(String[] args){
    	Developer developer = new Developer();
        
        developer.name ="하하";
        developer.type = DevType.WEB;
        
        System.out.println("개발자 이름: " + developer.name);
        System.out.println("직무파트: " + developer.type);
    }
}

enum DevType{
	MOBILE, WEB, SERVER
}

결과
개발자 이름: 하하
직무파트: WEB

Enum 메소드

  • 대표적으로 values(), ordinal(), valueOf() 3가지

values(): 열거된 모든 원소를 배열에 담아 순서대로 리턴

public class Developer{
	public static void main(String[] args){
    	for(DevType type : DevType.values()){
        	System.out.println(type);
        }
    }
}

enum DevType{
	MOBILE, WEB, SERVER
}

결과
MOBILE
WEB
SERVER

ordinal(): 원소에 열거된 순서를 정수 값으로 리턴

public class Developer{
	public String name;
    public DevType type;
    
    public void main(String[] args){
    	Developer developer = new Developer();
        
        developer.name = "하하";
        developer.type=DevType.MOBILE;
        
        System.out.println(developer.type.ordinal());
        
        DevType tp = developer.type.SERVER;
        
        System.out.println(tp.ordinal());
    }
}

enum DevType{
	MOBILE, WEB, SERVER
}

결과
0
2

valueOf(): 매개변수로 주어진 String과 열거형에서 일치하는 이름을 갖는 원소를 리턴(일치하지 않는 경우 예외(IllegalArgumentException) 발생)

public class Developer{
	public String name;
    public DevType type;
    
    public static void main(String[] args){
    	DevType tp1 = DevType.MOBILE;
        DevType tp2 = DevType.valueOf("WEB");
        
        System.out.println(tp1);
        System.out.println(tp2);
    }
}

enum DevType{
	MOBILE, WEB, SERVER
}

결과
MOBILE
WEB

열거형 상수를 다른 값과 연결하기

public class Developer{
	public String name;
    public DevType type;
    
    public static void main(String[] args){
    	for(DevType type : DevType.values()){
        	System.out.println(type.getName());
        }
    }
}

enum DevType{
	// 상수("연관시킬 문자") <- 이때 줄 끝에 세미콜론(;) 붙이기
    MOBILE("안드로이드"), WEB("스프링"), SERVER("리눅스");
    
    final private String name;
    
    public String getName(){
    	return name;
    }
    
    private DevType(String name){
    	this.name=name;
    }
}

결과
안드로이드
스프링
리눅스

profile
성장형 인간

0개의 댓글