TIL_180430 상수, enum

enum

  • enumerated type (열거형)은 서로 연관된 상수들의 집합
  • 상수 그룹별로 클래스를 만든것의 효과를 갖음
  • 즉, 사실상 클래스임으로 생성자(같은 이름 메소드), 필드, 메소드를 가질수 있음
  • 코드의 간결함과 동시에 구현의도가 열거임을 명확히 함
  • 인스턴스 생성과 상속, 값의 변경을 방지함
  • 또한 기본적인 클래스방법으로는 유사배열처럼 사용할 수 없는 단점이 있음 (사용자가 어떠한 데이터가 있는지 알아야만 사용 가능)
  • 반면, enum은 어떤 데이터가 있는지 몰라도 마치 배열처럼 하나씩 꺼내서 사용 가능함 (메소드 values())
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//.enum없이 클래스 정의 방법
class fruit{
public static final Fruit APPLE = new Fruit();
public static final Fruit PEACH = new Fruit();
public static final Fruit BANANA = new Fruit();
}
// 위의 코드를 enum을 활용하면 아래와 같이 간략하게 축약 가능 (동일한 내용 구현)
enum Fruit{
APPLE, PEACH, BANANA
}
// ** enumb생성자에 매개변수 전달하기
enum Fruit{
APPLE("red"), PEACH("pink"), BANANA("yellow");
// private으로 사용자의 접근을 막음
private String color;
public String getColor(){
return this.color;
}
// 같은 이름의 메소드 구문으로 생성자 만들기
Fruit(String color){
System.out.println("Call constructor" + this);
/* 생성자에서 this는 생성할 인스턴스
this.color: 인스턴스의 color, 우항의 color는 매개변수로 들어온 color
생성 후 Fruit.APPLE.getColor() 로 접근 가능함 */
this.color = color;
}
}