반응형
● 자료형의 부여를 돕는 열거형
enum Scale { // 열거 자료형 Scale 의 정의입니다. enm 은 열거형 키워드. 열거형 값 (Enumerated Values)
DO, RE, MI, FA, SO, RA, TI
}
스케일형 인스턴스의 도 데이터, 레 데이터... 이렇게 이름에 의미를 부여합니다.
아래는 열거형의 예제입니다.
public static void main(String[] args) {
Scale sc = Scale.DO;
System.out.println(sc);
switch(sc) {
case DO: //Scale. <-을 붙이지 않고 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("솔~ 라~ 시~ ");
}
}
열거형은 클래스 내에 정의 가능합니다.
클래스 내에 열거형이 정의되면 해당 클래스 내에서만 사용 가능한 열거형이 됩니다.
class Customer {
enum Gender { // 클래스 내에 정의된 열거형 Gender
MALE, FEMALE
}
private String name;
private Gender gen; // 참조타입으로 들어갈 수도 있습니다.
Customer(String n, String g) {
name = n;
if(g.equals("man"))
gen = Gender.MALE;
else
gen = Gender.FEMALE;
}
. . .
}
자바에서의 열거형은 클래스의 역할과 비슷합니다.
즉, 인스턴스를 생성할 수 있는 설계의 역할을 합니다.
class Person {
public static final Person MAN = new Person();
public static final Person WOMAN = new Person();
@Override
public String toString() {
return "I am a dog person"; // "나는 개를 사랑하는 사람입니다.“
}
}
class InClassInst {
public static void main(String[] args) {
System.out.println(Person.MAN);
System.out.println(Person.WOMAN);
}
}
모든 열거형은 메소드를 포함할 수 있습니다.
모든 열거형은 java.lang.Enum<E> 클래스를 상속합니다. 그리고 Enum<E>는 Object 클래스를 상속하기 때문에,
열거형은 클래스처럼 인스턴스를 생성할 수 있는 설계도 입니다.
열거형은 상수화 된 이름을 저장해두기 위한 목적을 가지고 있습니다.
모든 열거형에는 반드시 생성자가 있습니다.
그러므로 열거형의 정의에도 생성자가 없으면 디폴트 생성자가 삽입됩니다.
다만 이 생성자는 private으로 선언이 되어 직접 인스턴스를 생성하는 것이 불가능합니다.
enum Person {
MAN, WOMAN; //객체 생성의 필요가 없음
private Person() { // 생성자가 없음
System.out.println("Person constructor called");
}
@Override
public String toString() { return "I am a dog person"; }
}
class EnumConstructor {
public static void main(String[] args) {
System.out.println(Person.MAN);
System.out.println(Person.WOMAN);
}
}
열거형에 들어간 값은 그 자체의 값으로 사용하면 됩니다. 마치 클래스처럼요.
이제 간단한 예제를 작성해볼게요.
package day19;
//상수는 주로 대문자료 표기하며, 단어 사이를 언더바로 구분한다.
enum Animal{
DOG, CAT, MOUSE, TURTLE
}
public class Enum01 {
public static void main(String[] args) {
Animal dog = Animal.DOG; // 열거형(Animal형) 참조변수 dog를 만듦.
//스위치에 열거형을 주면, 상수명만으로 case 작성 가능
switch(dog){
case DOG:
System.out.println("멍멍,.");
case MOUSE:
System.out.println("찍찍..");
case TURTLE:
System.out.println("와아앙..");
}
}
}
반응형
'자바 > 자바 입문 공부일지' 카테고리의 다른 글
자바 기초 공부 일지 46. 람다lambda (0) | 2022.11.03 |
---|---|
자바 기초 공부 일지 45. 네스티드 클래스, 스테틱 클래스, 이너 클래스 (0) | 2022.11.03 |
자바 기초 공부 일지 43. ArrayList 정렬하기, Comparable과 Comparator, Comparator<T> (0) | 2022.11.03 |
자바 기초 공부 일지 42. 컬렉션 클래스 (5) 맵HashMap<K, V> (0) | 2022.11.03 |
자바 기초 공부 일지 41. 컬렉션 프레임 워크 (4) Queue<E> (0) | 2022.11.03 |