enum 클래스

hyyyynjn·2021년 5월 15일
0

자바 스터디

목록 보기
13/15
post-thumbnail

✋enum 클래스

enum : 서로 관련있는 상수들을 모아 심볼릭한 명칭의 집합으로 정의한 것이다.

  • JDK 1.5부터 열거체를 정의한 Enum 클래스를 사용할 수 있다.
  • 열거체를 비교할 때 실제 값과 더불어 타입까지 체크할 수 있다.
  • 열거체의 상숫값이 재정의되어도 다시 컴파일할 필요가 없다

enum 클래스 문법

✍ enum 선언하기

  • 열거된 순서에 따라 0 부터 순서값을 차례대로 가짐
  • 마지막 끝에 세미콜론(;)을 붙이지 않음
public enum Type {
    WALKING, RUNNING, TRACKING, HIKING
}

하나의 java 파일로 만들어서 선언하기

public class Shoes {
    public String name;
    public int size;
    public enum Type {
        WALKING, RUNNING, TRACKING, HIKING   
    }
}

클래스 안에서 선언하기

enum Type {
    WALKING, RUNNING, TRACKING, HIKING
}
public class Shoes {
    public String name;
    public int size;
    public Type type;
}

클래스 밖에서 선언하기

enum Type {
    // 상수("연결할 문자")
    WALKING("워킹화"), RUNNING("러닝화")
    , TRACKING("트래킹화"), HIKING("등산화")
     
    final private String name;
     
    private Type(Stirng name) { //enum에서 생성자 같은 역할
        this.name = name;
    }
    public String getName() { // 문자를 받아오는 함수
        return name;
    }
}

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

class Type {
    static final String WALKING = "워킹화";
    static final String RUNNING = "러닝화";
    static final String TRACKING = "트래킹화";
    static final String HIKING = "등산화";
}
 
public class Shoes {
    public static void main(String[] args) {
        String w = Type.WALKING;
        System.out.println(w);
    }
}

클래스의 static final 이용해서 열거형 선언하기

✍ 메소드

  • values() : 열거된 모든 원소를 배열에 담아 순서대로 반환한다
  • ordinal() : 원소에 열거된 순서를 정수 값으로 반환한다
  • valueOf(String param) : 매개변수로 주어진 String과 열거형에서 일치하는 이름을 갖는 원소를 반환한다 (존재하지 않으면 IllegalArgumentException 발생)
enum Type {
    WALKING, RUNNING, TRACKING, HIKING
}

public class Shoes {
    public static void main(String[] args) {
    	// values()
        for(Type type : Type.values()){
            System.out.println(type.getName());
        }
        
        // ordinal()
        Type type = new Type();
        System.out.println(Type.RUNNING.ordinal()); // 1
        
        // valueOf()
        System.out.println(Type.valueOf("WALKING")); // WALKING
    }
}

0개의 댓글