Language/Java

열거형(enums)

kimjingyu 2023. 5. 23. 00:34
728x90

열거형 정의

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

자바의 열거형

  • 자바의 열거형은 타입에 안전한 열거형(typesafe enum)이라서 실제 값이 같아도 타입이 다르면 컴파일 에러가 발생한다.
  • 열거형 상수를 사용하면 기존의 소스를 다시 컴파일하지 않아도 된다.
  • 열거형 상수의 값이 불연속적인 경우에는 열거형 상수의 이름 옆에 원하는 값을 괄호( )와 함께 적어주면 된다.
    • 그리고 지정된 값을 저장할 수 있는 인스턴스 변수와 생성자를 새로 추가해 주어야 한다.
    • 열거형의 인스턴스 변수가 반드시 final이어야 한다는 제약은 없다. 하지만 열거형 상수의 값을 저장하기 위한 것이므로 final을 붙인다.
    • 열거형의 생성자는 제어자가 묵시적으로 private이다.
    • 외부에서 값을 얻을 수 있도록 인스턴스 변수에 대한 getter를 만들어준다.

열거형 이해

  • 사실은 열거형 상수 하나하나가 '해당 열거형'의 객체이다.
  • static 상수값들은 객체의 주소가 같기 때문에, '==' 비교가 가능하다.
enum Direction { EAST, SOUTH, WEST, NORTH }

class Direction {
	static final Direction EAST = new Direction("EAST")
	static final Direction SOUTH = new Direction("SOUTH")
    static final Direction WEST = new Direction("WEST")
    static final Direction NORTH = new Direction("NORTH")
    
    private String name;
    
    private Direction(String name) {
    	this.name = name;
    }
}
728x90