[Java] Java API - Enum 클래스

chael_lo·2021년 5월 13일
0

Java

목록 보기
22/52

인터페이스로 상수필드 생성

  • public static final 지정자 생략 가능
  • int 자료형을 갖고 있는 자료형과 모두 비교가 가능하다.

Enum의 필요성

(인터페이스로 상수필드 생성 시 단점)

  • 다른 인터페이스 값과 중복될 수 있다.
  • 상수 필드가 의미있는 값이 아닌 정수값으로 표기된다.
  • 값을 비교할 때 필드명이 아닌 정수값으로 비교해도 문제가 되지 않는다.
public interface InterfaceOne {
	int INSERT=1, UPDATE=2, DELETE=3, SELECT=4;
}
public interface InterfaceTwo {
	int ADD=1, MODIFY=2, REMOVE=3, SEARCH=4;
}

//InterfaceOne.INSERT와 InterfaceTwo.ADD값의 중복됨
System.out.println(InterfaceOne.INSERT);//출력: 1
System.out.println(InterfaceTwo.ADD);//출력: 1

int choice = InterfaceOne.INSERT;
switch(choice) {
  case InterfaceOne.INSERT:
    System.out.println(InterfaceOne.INSERT);
    break;
  //InterfaceOne.UPDATE와 동일한 정수값
  //다른 인터페이스의 상수필드 값 등 동일한 값만 넣어주면
  //비교가 가능하다.
  case 2:
    System.out.println(2);
    break;
}

Enum 특징

  • 자료형을 적지 않아도 된다.
  • public static final int 생략이 가능하다.
  • 내부적으로 정수값이 저장되며,
    출력시 상수필드명을 출력되어 의미있는 문장이 출력된다.
  • 왼쪽부터 상수필드에는 0부터 1씩 증가된 정수값 자동 저장된다.
public enum EnumOne {
	//=> 
	INSERT,UPDATE,DELETE,SELECT;
}

Enum 나열형 변수 선언

Enum을 나열형으로 변수를 선언하여 자료형으로서의 형태로 사용할 수 있다.
해당 자료형의 상수 필드와 비교 가능하다.

//Enum을 나열형으로 변수를 선언
EnumOne choice = EnumOne.INSERT;//INSERT값 : 0
EnumOne choice = 1;//error: 정수값을 넣을 수 없다.
System.out.println(choice);//출력: 0

//나열형의 변수는 나열형의 상수필드만 비교 가능
switch(choice) {//choice는 0
	case INSERT:
		System.out.println("# 학생정보를 저장합니다.");
		break;
	case UPDATE:
		System.out.println("# 학생정보를 변경합니다.");
		break;
	case DELETE:
		System.out.println("# 학생정보를 삭제합니다.");
		break;
	case SELECT:
		System.out.println("# 학생정보를 검색합니다.");
		break;
}
//출력: # 학생정보를 저장합니다.

Enum과 생성자

상수필드에 원하는 값이 있다면 생성자의 매개변수에 값을 전달하여 상수필드를 초기화 작업 해야한다.
private final 지정자를 이용하여 선언한다.

//필드를 이용하여 상수필드에 원하는 초기값을 저장하기 위해 생성자 선언 
private final String value;

생성자는 반드시 private 지정자를 이용하여 선언해야 한다.

private StringEnum(String value) {
		this.value=value;
	}

Getter 메소드를 호출하여 상수필드에 저장된 초기값 반환받을 수 있다.

public String getValue() {
		return value;
	}

마지막으로 생성자 매개변수에 상수필드 초기값을 넣어준다.

public enum StringEnum {
	INSERT("삽입"),UPDATE("변경"),DELETE("삭제"),SELECT("검색");
}

상수필드와 생성자 상수필드값 출력 비교

  System.out.println(StringEnum.INSERT);//출력: INSERT
  System.out.println(StringEnum.INSERT.getValue());//출력: 삽입
profile
천천히 꾸준히

0개의 댓글