- λ³΄ν΅ μμλ static final ν€μλλ₯Ό μ¬μ©νμ¬ μ μν©λλ€.
- νμ§λ§ μ΄λ μ¬λ¬ λ¬Έμ μ μ μΌκΈ°μν¨λ€κ³ ν©λλ€.
- μ΄λ¬ν λ¬Έμ μ λ€μ ν΄κ²°νκΈ° μν Enum ν΄λμ€λ₯Ό μμλ΄
μλ€.
Enum Class
- Enumμ "Enumeration"μ μ½μμ΄λ©° Enumerationμ μ΄κ±°, λͺ©λ‘ λ±μ λ»μ κ°μ§κ³ μμ΅λλ€.
- μ ν΄μ§ λ°μ΄ν°μ λ¬Άμμ EnumμΌλ‘ λ¬Άμ΄μ£Όλ©΄ λ³΄λ€ κ΅¬μ‘°μ μΈ νλ‘κ·Έλλ°μ ν μ μμ΅λλ€.
- μ΄κ±° νμ
μ μλ‘ μ°κ΄λ μμ λ°μ΄ν°λ€μ μ§ν©μ
λλ€. λ°λΌμ λ°°μ΄μ²λΌ λμ΄νμ¬ μ¬μ©ν μ μμ΅λλ€.
- μ°μ μλ₯Ό λ€μ΄ μμλ΄
μλ€.
- μΌμ£ΌμΌμ λνλ΄λ λ³μ weekμ μμΌμ λνλ΄λ μμλ₯Ό λ£μ΄μ μ¬μ©νλ μν©μ΄λΌκ³ μκ°ν΄λ΄
μλ€.
public class Week {
public static final String MONDAY = "MONDAY";
public static final String SUNDAY = "SUNDAY";
public static void main(String[] args) {
String week ;
week = MONDAY;
week = SUNDAY;
week = "kimminje";
}
}
- μμ κ°μ μ½λκ° κ΅¬μ±λ κ²μ
λλ€.
- μμ κ°μ΄ weekλ μμλ₯Ό λ£μ΄μ μ¬μ©νμ§λ§ weekμ μ ν μκ΄μλ κ°μ΄ λ€μ΄κ°λ νλ‘κ·Έλ¨μ μμ§ λͺ»ν©λλ€. μ΄μ κ°μ μν©μ΄ μ€λ©΄ μ°λ¦¬λ week κ°μ΄ μμΌμ ν΄λΉνλ κ°μ΄ λ§λμ§ κ²μ¦νλ λ‘μ§μ λ ꡬνν΄μΌ ν©λλ€.
- μ΄λ¬ν μν©μ ν΄κ²°ν΄μ£Όλ κ²μ΄ enum ν΄λμ€μ
λλ€.
- μ½κ² λ§ν΄ μ΄κΈ°μ μΈ λ¬Έμ λ₯Ό λ°λ‘ μ‘κ² λ€!λΌλ κ²μ΄ enum ν΄λμ€μ
λλ€.
- enum ν΄λμ€λ μλμ κ°μ΄ μ¬μ©λ©λλ€.
enum Week {
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
}
public class TTest {
public static void main(String[] args) {
Week week ;
week = Week.MONDAY;
week = Week.SUNDAY;
System.out.println(week);
week = "kimminje";
}
}
- μμ κ°μ΄ μ ν¬μκ² λ°μνλ λ¬Έμ λ₯Ό ν΄κ²°ν΄μ£Όλ κ²μ νμΈν΄λ³Ό μ μμ΅λλ€.
- κ·ΈλΌ enum ν΄λμ€μ λν΄ λ μμΈνκ² μμλ΄
μλ€!
Enumμ νΉμ§
- DBμ μ½λ κ°κ³Ό λ§μ΄ νμ©λ μ μμ΅λλ€.
- primitive(μμ) νμ
μ΄ μλΒ referece(μ°Έμ‘°) νμ
μΌλ‘ λΆλ₯λλ―λ‘ enum μμκ°μΒ ν μμμ μ μ₯λκ² λ©λλ€.
- μμμ μλ₯Ό λ€λ©΄ MONDAYμ SUNDAYλΌλ κ°μ²΄κ° ν μμμ μμ±λκ³ mondayμ sunday λ³μλ κ°μ²΄μ λ²μ§λ₯Ό μ°Έμ‘°νλ κ°μ κ°μ§κ² λ©λλ€.
- μμ μμ κ°μ΄ μ¬μ©μκ° μ¬λ°λ₯Έ κ°μ μ¬μ©νλμ§μ λν κΈ°λ₯μ ꡬννμ§ μκ³ λ νλ¨ν μ μμ΅λλ€.
- enum νμ
κ°μ²΄λ νλμ λ°μ΄ν° νμ
μ΄λ―λ‘ λ³μλ₯Ό μ μΈνκ³ μ¬μ©ν μ μμ΅λλ€.
Enumμ μ₯μ
- μ½λκ° λ¨μν΄μ§λ©° κ°λ
μ±μ΄ μ’μμ§λλ€.
- μΈμ€ν΄μ€ μμ±κ³Ό μμμ λ°©μ§νμ¬ μμμ νμ
μμ μ±(Type-Safety)κ° λ³΄μ₯λ©λλ€.
- ꡬν μλκ° μ΄κ±°μμ νμ€νκ² μ μ μλ€.
Enumμ λ©μλ
- λͺ¨λ Enum νμ
μ μ»΄νμΌ μμ java.lang.Enum ν΄λμ€λ₯Ό μμνκ² λμ΄μκΈ° λλ¬Έμ, java.lang.Enum μ μ μΈλ λ©μλλ₯Ό μ΄μ©ν μ μμ΅λλ€.
- Enumμ λ€μκ³Ό κ°μ λ©μλλ€μ΄ μμ΅λλ€.
λ©μλ | μ€λͺ
| λ¦¬ν΄ νμ
|
---|
name() | μ΄κ±°μ²΄ μμμ μ΄λ¦μ 리ν΄ν©λλ€. | String |
ordinal() | ν΄λΉ μ΄κ±°μ²΄ μμμ μ΄κ±°μ²΄ μλ²(0λΆν° μμ)μ 리ν΄ν©λλ€. | int |
compareTo() | μ΄κ±°μ²΄ μμλ€μ λΉκ΅νμ¬ μλ² μ°¨μ΄λ₯Ό 리ν΄ν©λλ€. | int |
valueOf(String name) | λ¬Έμμ΄μΒ μ
λ ₯λ°μμΒ μΌμΉνλΒ μ΄κ±°μ²΄ μμλ₯ΌΒ 리ν΄ν©λλ€. | enum |
values() | λͺ¨λ μ΄κ±° κ°μ²΄λ€μ enumλ°°μ΄λ‘ 리ν΄ν©λλ€. | enum[] |
- μ΄ μΈμ λ©μλλ₯Ό λ λ³΄κ³ μΆλ€λ©΄ μ¬κΈ°λ‘ππ
Enum 맀ν
- λν Enumμ μμλ₯Ό κ°μ Έμμ λ μμμ κ³ μ κ°μ κ°μ Έμ€κ³ μΆμΌλ©΄ 맀ννμ¬ μ¬μ©ν μλ μλ€.
public enum Week {
MONDAY("μμμΌ"),
TUESDAY("νμμΌ"),
WEDNESDAY("μμμΌ"),
THURSDAY("λͺ©μμΌ"),
FRIDAY("κΈμμΌ"),
SATURDAY("ν μμΌ"),
SUNDAY("μμμΌ");
private String week;
private Week(String week) {
this.week = week;
}
public String getDay(){
return week;
}
}
public class Test {
public static void main(String[] args) {
Week week = Week.SUNDAY;
System.out.println(week);
System.out.println(week.getDay());
}
}
SUNDAY
μΌμμΌ
- μ΄μ κ°μ΄ μμλ₯Ό (β β)μΌλ‘ κ³ μ κ°μ μ£Όκ³ getter, setter λ©μλλ₯Ό λ§λ€μ΄μ£Όλ©΄ μμ κ°μ΄ μ¬μ©ν μ μλ€.
λ°μ΄ν°μ κ·Έλ£Ήν λ° κ΄λ¦¬
- λν enumμΒ λ°μ΄ν°μ κ·Έλ£Ήν λ° κ΄λ¦¬μ μ©μ΄ν©λλ€.
- λ°μ΄ν°λ€μ enumμ ν΅ν΄Β ν ν΄λμ€ λ΄μμ κ΄λ¦¬ν μ μμ΅λλ€.
- μλ₯Ό λ€μ΄ λ°μ λν νμλ€ λͺ
λ¨μ λ€λ£¬λ€κ³ νλ€λ©΄, λ°λ λ€λ₯΄κ³ κ°μ λ°μμ νμλ€λ λ€λ₯΄λ λ° ν΄λμ€μ νμ ν΄λμ€λ₯Ό λλμ΄ λ ν΄λμ€κ° μ°κ΄λκ² μ½λλ₯Ό ꡬμ±ν΄μΌν κ²μ
λλ€.
- νμ§λ§ enumμ μ΄μ©νλ©΄ νλμ 보기 μ½κ² ꡬμ±μ΄ κ°λ₯ν©λλ€.Β κ·Έλ¦¬κ³ μ μ ν λ©μλ λ‘μ§μ enum κ°μ²΄ λ΄ μμ ꡬνν΄μ€λ€λ©΄ κ°λ ₯ν μμ ν΄λμ€λ₯Ό ꡬνν μ μκ² λ©λλ€.
public enum Class {
CLASSA("Aλ°", Arrays.asList("kim", "min", "je")),
CLASSB("Bλ°", Arrays.asList("kim", "seoung", "hyun"));
private final String Class;
private final List<String> name;
Week(String Class, List<String> name) {
this.Class = Class;
this.name = name;
}
String getClass(String names) {
return Arrays.stream(Class.values())
.filter(classes -> classes.equals(names))
.findFirst()
.orElseThrow(Exception::new);
}
}
Enumμ νμ₯
- enum 맀ν κΈ°λ₯κ³Ό λλ€λ₯Ό νμ©νμ¬ μνμ νμλ₯Ό ν κ³³μμ κ΄λ¦¬κ° κ°λ₯ν©λλ€.
- μ΄λ₯Ό μ΄μ©νλ©΄ μλμ κ°μ΄ κ°λ¨ν μ¬μΉμ°μ° λ‘μ§μ ꡬνν μ μμ΅λλ€.
import java.util.function.DoubleBinaryOperator;
enum Operation {
PLUS("+", (x, y) -> x + y),
MINUS("-", (x, y) -> x - y),
TIMES("*", (x, y) -> x * y),
DIVIDE("/", (x, y) -> x / y);
private final DoubleBinaryOperator op;
private final String symbol;
Operation(String symbol, DoubleBinaryOperator op) {
this.symbol = symbol;
this.op = op;
}
@Override
public String toString() { return symbol; }
public double apply(double x, double y) {
return op.applyAsDouble(x, y);
}
}