Enum Type

man soup·2020년 10월 30일
0

자바 문법

목록 보기
15/15

Enum 타입이란?

  • 변수를 미리 정의된 상수가 되도록 해주는 특별한 타입
  • 변수는 항상 미리 정의한 값들중 하나여야한다.
    • ex) NORTH,SOUTH,EAST,WEST
  • 상수이므로 이넘 타입의 필드들은 대문자이다.
  • enum 키워드를 사용해 enum 타입을 정의한다

자바에서 enum 타입은 여러 기능 제공

  • enum 선언으로 class를 정의하는데 class body는 메소드와 다른 필드들을 포함할 수 있다.
  • enum을 생성할때 컴파일러가 몇개의 특별한 메소드를 자동적으로 추가한다.
  • 예를들어 static values 메소드를 자동적으로 추가한다.
    • enum의 값들을 선언한 순서대로 담은 배열을 반환하는 기능
    • 이 메소드는 보통 for-each를 생성해 enum 타입의 값들을 iterate할때 사용
    • ex) for (Planet p : Planet.values()){...}

특징

  • 모든 enum들은 java.lang.Enum을 암시적으로 상속받아 다른 클래스 상속 받을 수 없다.
  • enum 상수를 어떤 값으로 선언하면 이 값들은 enum 상수가 생성될때 생성자로 전달된다.
  • 필드와 메소드가 존재하면 enum 상수의 마지막은 세미콜론으로 끝나야 한다.
  • enum 타입의 생성자는 항상 package-private(아무것도 안붙인것) 이거나 private 접근자여야 한다.
  • 생성자는 상수들을 자동적으로 생성하므로 직접 생성자를 호출하면 안된다.

예시 코드

enum Man {
    BILLY (160,60),
    TOM (190,100),
    BRUCE (163,80),
    TIM (174,70);
    
    private final int height;
    private final int weight;
    
    public int getHeight(){return height;}
    public int getWeight(){return weight;}
    
    Man(int height, int weight) {
        this.height = height;
        this.weight = weight;
    }

}

public class Test {
    public static void main(String[] args) {
       for(Man man : Man.values()){
           System.out.println(man.name()+ " "+man.getHeight()+ " "+ man.getWeight());
       }
    }

}

결과 : 
BILLY 160 60
TOM 190 100
BRUCE 163 80
TIM 174 70
profile
안녕하세요

0개의 댓글