[JAVA] Enum

손호영·2023년 11월 6일
post-thumbnail

열거형이란?

  • 서로 관련된 상수를 편리하게 선언하기 위한 것으로 여러 상수를 정의할 때 사용하면 유용함
  • C언어에서는 타입이 달라도 값이 같으면 조건식결과가 참이였지만, 자바의 열거형은 값이 같아도 타입이 다르면 컴파일 에러가 발생
  • 따라서 equals()로 비교 안하고 "=="으로 비교가 가능
  • 상수의 값이 바뀌면, 해당 상수를 참조하는 모든 소스를 다시 컴파일 해야 하지만, 열거형을 쓰면 열거형만 컴파일 하면 됌

사용법

enum 열거형이름 { 상수명 1, 상수명 2, ...}

Enum 메서드

  • getDeclaringClass() - 열거형의 Class 객체를 반환한다.
  • name() - 열거형 상수의 이름을 문자열로 반환한다.
  • ordinal() - 열거형 상수가 정의된 순서를 반환한다.
  • valueOf(Class< T > enumType) - 지정된 열거형에서 name과 일치하는 열거형 상수 반환

열거형에 멤버 추가하기

enum Driection {
	EAST(1,">"), SOUTH(2,"V"), ...
    Direction(int value, String symbol){
    	this.value = value;
        this.symbol = symbol;
    }
}

위와 같이 하나의 열거형 상수에 여러값을 추가할 수 있다. 다만 그에 맞게 생성자를 넣어줘야 함.

열거형의 이해

열거형이 내부적으로 어떻게 구현되어 있는가에 대한 이해

enum Direction{ EAST, SOUTH, WEST, NORTH}

열거형이 위와 같이 정의되어 있을 때, 사실은 열거형 상수 하나하나가 Direction 객체이다.

class Direction{
	static final Direction EAST = new Direction("EAST")
    ...
}

위와 같이 static 객체로 선언되어 있고, 각각의 값은 객체의 주소이므로 "=="비교가 가능해진다는 것이다.

profile
안녕하세요. 열심히 해보겠습니다

0개의 댓글