โ๏ธ Info.
- Java Enum ํ์ต
๐ List.
1. Enum ์ ์
2. Enum์ด ์ ๊ณตํ๋ ๋ฉ์๋ (values()์ valueOf()) + ordinal()(์ถ๊ฐ)
3. java.lang.Enum
โ๏ธ Content.
1. Enum ์ ์
1). Enum ์ด๋
- ๋ฉค๋ฒ๋ผ ๋ถ๋ฆฌ๋ ๋ช ๋ช ๋ ๊ฐ์ ์งํฉ์ ์ด๋ฃจ๋ ์๋ฃํ
- ์ด๊ฑฐํ(enumerated type)์ด๋ผ ๋ถ๋ฅธ๋ค.
- ์๋ฃ ์ฐ๊ด๋ ์์๋ค์ ์งํฉ
- Java 1.5๋ถํฐ ์ฌ์ฉ ๊ฐ๋ฅ
- ์ด๊ฑฐ์ฒด๋ฅผ ๋น๊ตํ ๋ ์ค์ ๊ฐ ๋ฟ๋ง์๋๋ผ ํ์ ๊น์ง๋ ์ฒดํฌํ๋ค.
- ์ด๊ฑฐ์ฒด์ ์์๊ฐ์ด ์ฌ์ ์๋๋๋ผ๋ ์ฌ ์ปดํ์ผํ ํ์๊ฐ ์๋ค.
2). Enum ์ ์
- enum ์ด๊ฑฐ์ฒด๋ช {์์1์ด๋ฆ, ์์2์ด๋ฆ, ...}
public enum customEnum {
RED, BLUE, ORANGE, YELLOW
}
3). Enum ์ฌ์ฉ
void useEunm(){
customEnum red = customEnum.RED;
System.out.println(red);
}
์ถ๋ ฅ
RED
4). Enum์ ์์๊ฐ ์ ์ ๋ฐ ์ถ๊ฐ
- ์ด๊ฑฐ์ฒด์ ์ฒซ ๋ฒ์งธ ์์ซ๊ฐ์ 0๋ถํฐ ์ค์ ๋๋ฉฐ, ๊ทธ๋ค์์ ๋ฐ๋ก ์์ ์์ซ๊ฐ๋ณด๋ค 1๋งํผ ์ฆ๊ฐ๋๋ฉฐ ์ค์ ๋๋ค.
- ๋ถ๊ท์นํ ๊ฐ์ ์์๊ฐ์ผ๋ก ์ค์ ํ๊ณ ์ถ์ผ๋ฉด ์์์ ์ด๋ฆ ์์ ๊ดํธ()๋ฅผ ์ถ๊ฐํ๊ณ , ๊ดํธ ์์ ์ํ๋ ์์๊ฐ์ ๋ช
์ํ ์ ์๋ค.
- ์ด๋ ๋ถ๊ท์นํ ํน์ ํ ๊ฐ์ ์ ์ฅํ ์ ์๋ ์ธ์คํด์ค ๋ณ์์ ์์ฑ์๋ฅผ ๋ณ๋๋ก ์ถ๊ฐํด์ผ ํ๋ค.
public enum customEnum {
RED(1), BLUE(2), ORANGE(5), YELLOW(6);
int val;
customEnum(int val) {
this.val = val;
}
}
5). Enum (val) ์ฌ์ฉ
void useEunm(){
customEnum red = customEnum.RED;
System.out.println(red);
System.out.println(red.val);
}
์ถ๋ ฅ
RED
1
2. Enum์ด ์ ๊ณตํ๋ ๋ฉ์๋ (values()์ valueOf()) + ordinal()(์ถ๊ฐ)
1). values()
- ํด๋น ์ด๊ฑฐ์ฒด์ ๋ชจ๋ ์์๋ฅผ ์ ์ฅํ ๋ฐฐ์ด์ ์์ฑํ์ฌ ๋ฐํํ๋ ๋ฉ์๋
- ์๋ฐ์ ๋ชจ๋ ์ด๊ฑฐ์ฒด์ ์ปดํ์ผ๋ฌ๊ฐ ์๋์ผ๋ก ์ถ๊ฐํด์ค๋ค.
// Enum
public enum customEnum {
RED(1), BLUE(2), ORANGE(5), YELLOW(6);
int val;
customEnum(int val) {
this.val = val;
}
}
// values()
void valuesEnum(){
customEnum[] values = customEnum.values();
for (customEnum value : values) {
System.out.println(value);
}
}
์ถ๋ ฅ
RED
BLUE
ORANGE
YELLOW
2). valueOf()
- ์ ๋ฌ๋ ๋ฌธ์์ด๊ณผ ์ผ์นํ๋ ํด๋น ์ด๊ฑฐ์ฒด์ ์์๋ฅผ ๋ฐํ
//Enum
public enum customEnum {
RED(1), BLUE(2), ORANGE(5), YELLOW(6);
int val;
customEnum(int val) {
this.val = val;
}
}
//valueOf()
void valueOfEnum(){
customEnum yellow = customEnum.valueOf("YELLOW");
System.out.println(yellow);
}
์ถ๋ ฅ
YELLOW
3). ordinal()
- ์ด๊ฑฐ์ฒด ์์๊ฐ ์ด๊ฑฐ์ฒด ์ ์์์ ์ ์๋ ์์(0๋ถํฐ ์์)๋ฅผ ๋ฐํ
- ๋ฐํ๋๋ ๊ฐ์ ์ด๊ฑฐ์ฒด ์ ์์์ ํด๋น ์ด๊ฑฐ์ฒด ์์๊ฐ ์ ์๋ ์์์ด๋ฉฐ, ์์๊ฐ ์์ฒด๊ฐ ์๋๋ค.
//Enum
public enum customEnum {
RED(1), BLUE(2), ORANGE(5), YELLOW(6);
int val;
customEnum(int val) {
this.val = val;
}
}
//ordinal()
void ordinalEnum(){
int ordinal = customEnum.YELLOW.ordinal();
System.out.println(ordinal);
}
์ถ๋ ฅ
3
3. java.lang.Enum
- Enum ํด๋์ค๋ ๋ชจ๋ ์๋ฐ ์ด๊ฑฐ์ฒด์ ๊ณตํต๋ ์กฐ์ ํด๋์ค์ด๋ค.
- ๋ฐ๋ผ์ Java๋ ๋ค์ค ์์์ ์ง์ํ์ง ์๊ธฐ ๋๋ฌธ์ Enum์ ๋ค๋ฅธ ํด๋์ค๋ฅผ ์์๋ฐ์ ์ ์๋ค.
- Enum ํด๋์ค์๋ ์ด๊ฑฐ์ฒด๋ฅผ ์กฐ์ํ๊ธฐ ์ํ ๋ค์ํ ๋ฉ์๋๋ค์ด ์๋ค.
- ์ด๊ฑฐํ ์์ ๊ฐ์ ๋น๊ต์๋ ==์ compareTo() ์ฌ์ฉ ๊ฐ๋ฅํ๋ค
- ๋น๊ต ์ฐ์ฐ์๋ ์ฌ์ฉ ๋ถ๊ฐ
- ์ฃผ๋ก ์ฌ์ฉ๋๋ ๋ฉ์๋
๋ฉ์๋ | ์ค๋ช |
static E values() | ํด๋น ์ด๊ฑฐ์ฒด์ ๋ชจ๋ ์์๋ฅผ ์ ์ฅํ ๋ฐฐ์ด์ ์์ฑํ์ฌ ๋ฐํ |
static E valueOf(String name) | ์ ๋ฌ๋ ๋ฌธ์์ด๊ณผ ์ผ์นํ๋ ํด๋น ์ด๊ฑฐ์ฒด์ ์์๋ฅผ ๋ฐํ |
String name() | ํด๋น ์ด๊ฑฐ์ฒด ์์์ ์ด๋ฆ์ ๋ฐํ |
int ordinal() | ํด๋น ์ด๊ฑฐ์ฒด ์์๊ฐ ์ด๊ฑฐ์ฒด ์ ์์์ ์ ์๋ ์์(0๋ถํฐ ์์)์ ๋ฐํ |
4. EnumSet
1).EnumSet
- Set ์ธํฐํ์ด์ค ๊ธฐ๋ฐ์ผ๋ก ์ด๊ฑฐํ ํ์ ์ผ๋ก ์ง์
- java.util ํจํค์ง ํด๋์ค
- ๋นํธ ์ฐ์ฐ์ ์ด์ฉํด ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ๋ ์ ๊ฒ ์ฐจ์งํ๊ณ ์๋๋ ๋น ๋ฅด๋ค.
- new ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ ์์ฑ ๋ถ๊ฐ๋ฅ
์ฃผ์์
- ์์ฑ์ ์ค๋ฒ ๋ผ์ด๋ฉ ๋ถ๊ฐ๋ฅ
- ๋์ผํ ํ์ ์ ์ด๊ฑฐ ์์๋ง ์ ์ธ ๊ฐ๋ฅ
- null๊ฐ์ ๋ฃ๊ฑฐ๋ NullPointException์ ๋์ง ์ ์๋ค.
- ์ค๋ ๋๋ก๋ถํฐ ์์ ํ์ง ์์ผ๋ฏ๋ก ํ์ํ ๊ฒฝ์ฐ ์ธ๋ถ์์ ๋๊ธฐํ
- ์์๋ ์ด๊ฑฐ ํ์ ์ ์ธ๋ ์์์ ๋ฐ๋ผ ์ ์ฅ (ordinal)
๋ฉ์๋
๋ฉ์๋ | ์ค๋ช |
allof(Class<E> elementType) | ๋ชจ๋ ์์๋ฅผ ํฌํจํ๋ EnumSet ์์ฑ |
clone() | ๋ณต์ฌ๋ณธ ์์ฑ |
complementOf(EnumSet<E> s) | ํน์ ์์๋ฅผ ์ ์ธํ๊ณ EnumSet ์์ฑ |
copyOf(Collection<E> c) copyOf(EnumSet<E> s) |
Collections์ ์ฌ์ฉํ ๋ณต์ฌ๋ณธ ์์ฑ |
noneOf(Class<E> elementType) | ๋น EnumSet ์์ฑ |
of(E e) of(E first, E... rest) of(E e1, E e2) of(E e1, E e2, E e3) of(E e1, E e2, E e3, E e4) of(E e1, E e2, E e3, E e4, E e5) |
ํน์ ์์๋ฅผ ํฌํจํ EnumSet ์์ฑ |
range(E form, E to) | ํน์ ๋ฒ์(์์)๋ฅผ ๊ฐ์ง๋ EnumSet ์์ฑ |
//Enum
public enum customEnum {
RED(1, "๋นจ๊ฐ"), BLUE(2, "ํ๋"), ORANGE(5, "์ฃผํฉ"), YELLOW(6, "๋
ธ๋");
int val;
String name;
customEnum() {
this.val = val;
}
customEnum(int val, String name) {
this.val = val;
this.name = name;
}
}
// SetEnum Method()
void setEnum(){
/* ์ ์ฒด ์์๊ฐ ์๋ Enum Set ์์ฑ */
EnumSet<customEnum> allOf = EnumSet.allOf(customEnum.class);
System.out.println("EnumSet.allOf => " + allOf);
/* ๋ณต์ฌ๋ณธ ์์ฑ */
EnumSet<customEnum> clone = allOf.clone();
System.out.println("clone => " + clone);
/* EnumSet์ ์ด์ฉํ ๋ณต์ฌ๋ณธ ์์ฑ */
EnumSet<customEnum> copyOf = EnumSet.copyOf(allOf);
System.out.println("copyOf => " + copyOf);
/* ํน์ ์์๋ง ์์ฑ */
EnumSet<customEnum> enumOf = EnumSet.of(customEnum.BLUE, customEnum.RED);
System.out.println("EnumSet.of => " + enumOf);
/* ํน์ ์์ ์ ์ธํ๊ณ ์์ฑ */
EnumSet<customEnum> complementOf = EnumSet.complementOf(enumOf);
System.out.println("EnumSet.complementOf = > " + complementOf);
/* ๋น Enum Set ์์ฑ */
EnumSet<customEnum> noneOf = EnumSet.noneOf(customEnum.class);
System.out.println("EnumSet.noneOf => " + noneOf);
/* ํน์ ๋ฒ์ ์์ฑ*/
EnumSet<customEnum> range = EnumSet.range(customEnum.BLUE, customEnum.YELLOW);
System.out.println("EnumSet.range => " + range);
}
์ถ๋ ฅ
EnumSet.allOf => [RED, BLUE, ORANGE, YELLOW]
clone => [RED, BLUE, ORANGE, YELLOW]
copyOf => [RED, BLUE, ORANGE, YELLOW]
EnumSet.of => [RED, BLUE]
EnumSet.complementOf = > [ORANGE, YELLOW]
EnumSet.noneOf => []
EnumSet.range => [BLUE, ORANGE, YELLOW]
โ๏ธ Refer.
- enum ์ ์ํ๋ ๋ฐฉ๋ฒ
https://ko.wikipedia.org/wiki/%EC%97%B4%EA%B1%B0%ED%98%95
https://opentutorials.org/course/2517/14151
- enum์ด ์ ๊ณตํ๋ ๋ฉ์๋ (values()์ valueOf())
http://www.tcpschool.com/java/java_api_enum
- java.lang.Enum
http://www.tcpschool.com/java/java_api_enum
- EnumSet
https://wisdom-and-record.tistory.com/52
https://velog.io/@kwj1270/Enum
https://docs.oracle.com/javase/8/docs/api/java/util/EnumSet.html
'Live-Study' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[13์ฃผ์ฐจ] I/O (0) | 2021.02.19 |
---|---|
[12์ฃผ์ฐจ] ์ ๋ ธํ ์ด์ (0) | 2021.02.19 |
[10์ฃผ์ฐจ] ๋ฉํฐ์ฐ๋ ๋ ํ๋ก๊ทธ๋๋ฐ (0) | 2021.02.19 |
[9์ฃผ์ฐจ] ์์ธ ์ฒ๋ฆฌ (0) | 2021.02.19 |
[8์ฃผ์ฐจ] ์ธํฐํ์ด์ค (0) | 2021.02.19 |