2018-3-17 TIL Java enum
Enum
- 열거형의 목적은 ‘의미가 부여된 이름’을 갖는 ‘상수’의 선언이다.
enum MyEnum { // 열거자료형 MyEnum의 정의
DO, RE, MI, FA, SO, RA, SI
}
-
안에 위치한 이름들을 가리켜 열거형값이라고한다.
- 열거형은 참조변수 선언도 가능하다. 단 선언된 참조변수는 해당 열거형 내에 선언된 ‘열거형 값’만 대입이 가능하다.
- MyEnum me = MyEnum.DO;
package yoon;
enum Scale {
DO, RE, MI, FA, SO, RA, TI
}
public class SimpleEnum {
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("솔~ 라~ 시~");
break;
}
}
}
//result
DO
도~
클래스 내에 정의가 가능한 열거형
class Customer {
enum Gender {
MALE, FEMALE
}
...
Gener gen;
...
}
package yoon;
class Customer {
enum 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;
}
@Override
public String toString() {
if(gen == Gender.MALE)
return "Thank you, Mr " + name;
else
return "Thank you, Mrs " + name;
}
}
public class InnerEnum {
public static void main(String [] args) {
Customer cus1 = new Customer("Brwon", "man");
Customer cus2 = new Customer("Susan Hill", "woman");
System.out.println(cus1);
System.out.println(cus2);
}
}
//result
Thank you, Mr Brwon
Thank you, Mrs Susan Hill
package yoon;
enum Person2 {
MAN(29);
int age;
private Person2(int age) {
this.age = age;
}
@Override
public String toString() {
return "I am " + age + " years old";
}
}
public class EnumParamConstructor {
public static void main(String [] args) {
System.out.println(Person2.MAN);
}
}
//result
I am 29 years old
- 열거형의 생성자는 무조건 private로 선언한다
- 소괄호를 통해 생성자에 인자전달이 가능하다.
Written on March 17, 2018