Live-Study
[11μ£Όμ°¨] Enum
youn12
2021. 2. 19. 16:14
βοΈ 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