JAVA STUDY(with whiteship) 11주차 Enum

hwk·2021년 3월 5일
0

JAVA STUDY

목록 보기
11/12
post-custom-banner

목표

자바의 열거형에 대해 학습.

학습할 내용

enum 정의하는 방법
enum이 제공하는 메소드 (values()와 valueOf())
java.lang.Enum
EnumSet

1. enum 정의하는 방법

■ 열거형 정의

enum Scale { // 열거 자료형 Scale의 정의
	DO, RE, MI, FA, So, RA, TI
}

열거형 값(Enumerated Values)도 레 미 파 솔 라 시 는 열거형 값이다.case문에서는 표현의 간결함을 위해 Do와 같이'열거형 값'의 이름만 명시하기로 약속되어 있다.

■ switch문에서 열거형 활용하기

public static void main(String[] args) {
  Scale sc = Scale.DO;
  System.out.println(sc);
  
  switch(sc) {
  	case DO:
  	System.out.println("도 ");
  	break;
  case RE:
  	System.out.println("레~ ");
  	break;
  case MI:
  	System.out.println("미 ");
  	break;
  case FA:
  	System.out.println("파 ");
  	break;
  default:
  	System.out.println("~~~");
  }
}

위와 같은 방식으로 switch문에 활용할 수 있다.
특이한 점은 레이블에 sc.Do, sc.RE 와 같은 방식이 아닌 열거형 값 하나만 기재한다.

■ 클래스 내에서의 열거형

class Customer {
	enum Gender {
		MALE, FEMALE
	}
	private Gender gen;
	Customer(String g) {
		if(e.equals("man"))
			gen = Gender.MALE;
		else
			gen = Gender.FEMALE;
	}
}

클래스 내에서 열거형을 정의하면, 이 클래스 내에서만 사용할 수 이ㅆ다.
즉, 특정 클래스 내에서만 쓰고자 하는 열거형이 있을 때 사용한다.

■ 열거형 생성자에 인자 전달하기

enum Person {
	MAN (29), WOMAN( 25);
	int age;
	private Person(int age) {
	this.age = age;
}
@Override
public String toString() {
	return "I am " + age + " years old";
}
class EnumParamConstructor {
	public static void main(String[] args) {
	System.out.println(Person. MAN);
	System.out.println(Person.WOMAN);
}

2. enum이 제공하는 메소드 (values()와 valueOf())

모든 열거형 클래스는 Enum 클래스를 상속한다.
이 Enum 클래스에는 values()와 valueOf() 라는 메서드가 있다.
■ valueOf()

Scanner keyboard = new Scanner(System.in);

String where = keyboard.nextLine();

where = where.toUpperCase();

City dest = City.valueOf(City.class, where);
switch(dest)
{
case SEOUL:
	~~
case BUSAN:
	~~
case JEJU:
	~~
	break;
}

City dest = City.valueOf(City.class, where);
첫 번째 인자로 열거형 클래스의 정보를 전달하고
그 후 두 번째 인자로 전달된 문자열에 해당하는 열거형 값 인스턴스를 반환한다.

City.class는 Class라는 클래스의 인스턴스이다.
API 문서를 참조하면 Class 라는 이름의 클래스가 있는데, 이 클래스는 자료형 정보를 표현하기 위한 클래스이다.
즉 City.class는 열거형 클래스인 City의 자료형 정보를 담고 있는 Class 인스턴스의 참조변수이다.

■ values()
열거체의 모든 상수가 들어있는 배열을 반환한다.

enum City {
    SEOUL, BUSAN, JEJU;
}

public class EnumTest {

    public static void main(String[] args) {
        ciryArray[] arr = City.values();
        System.out.println("모든 도시 이름");
        for (City city : arr) {
            System.out.println(city);
        }
    }
}

3. java.lang.Enum

모든 열거형은 Enum 클래스를 상속한다.
그리고 Enum 클래스는 당연히 Object 클래스를 상속한다.

# End

참고 서적 : 난 정말 JAVA를 공부한 적이 없어요 (ORANGE MEDIA 윤성우 저)

profile
Elegant Dev
post-custom-banner

0개의 댓글