Week11(Enum)
Enumμ΄λ?
μ΄κ±°μ²΄λΌκ³ ν΄μ enumeration typeμ΄λ€.
ν΄λμ€μ²λΌ 보μ΄κ² νλ μμ
μμμ΄κΈ° λλ¬Έμ equalsν¨μκ° μλ '=='λ‘ λΉκ΅κ° κ°λ₯νλ€!!
μλ‘ κ΄λ ¨ μλ μμλ€μ λͺ¨μ μ¬λ³Όλ¦ν λͺ μΉμ μ§ν©μΌλ‘ μ μν κ²
Enum ν΄λμ€νμ κΈ°λ°μΌλ‘ ν ν΄λμ€ν μ μΈ
μλ‘μ΄ μ΄κ±°νμ μ μΈνλ©΄, λ΄λΆμ μΌλ‘ Enum ν΄λμ€ν κΈ°λ°μ μλ‘μ΄ ν΄λμ€νμ΄ λ§λ€μ΄μ§
μ₯μ
λ¬Έμμ΄κ³Ό λΉκ΅ν΄μ μλμμ±, μ€νκ²μ¦, ν μ€νΈ 리ν©ν λ§ λ± μ¬λ¬κ°μ§ μ§μμ λ°λ κ²μ΄ κ°λ₯
νμ© κ°λ₯ν κ°λ€μ μ νν μ μμ
μ΄κ±°μ²΄λ₯Ό λΉκ΅ν λ μ€μ κ°λΏλ§ μλλΌ νμ κΉμ§λ 체ν¬
μ΄κ±°μ²΄μ μμ«κ°μ΄ μ¬μ μλλλΌλ λ€μ μ»΄νμΌ ν νμκ° μμ
Enumμ λ©λͺ¨λ¦¬ ν λΉ
Javaμμ enum(μ΄κ±° μμ)λ μ μΈνκ² λλ©΄ λͺ¨λλ₯Ό public static finalλ‘ μμ±νκ² λλ€. μ¬κΈ°μ Staticμ΄λ ν€μλκ° λΆκΈ° λλ¬Έμ staticμ΄ λΆμ κ²λ€μ jvmμμμ methodμμμ ν λΉλκ² λκ³ νλ‘κ·Έλ¨μ΄ λλ λμμλ μνλ λλ‘ κΊΌλ΄μ μ¬μ©ν μ μκ² λλ€.
enumμ κ°μ²΄λ₯Ό μμ±νλ κ²κ³Ό λΉμ·νμ§λ§, λ°λ‘ new ν€μλλ₯Ό μ¬μ©ν΄μ κ°μ²΄λ₯Ό λ§λ€μ§λ μλλ€.
enumνμ μ κ°μ§ κ°μ²΄λ₯Ό λ§λ€κ² λλ€λ©΄,
κ·Έ μκ° jvmμ heap μμμ λͺ¨λ enumνμ μ΄ μμ±λκ² λλ€. (heapμμμ΄λ newν€μλ λ±μ ν΅ν΄ μλ‘ λ§λ€μ΄μ§ κ°μ²΄λ€μ΄ λ€μ΄κ°λ μμμ΄λ€)
κ·Έλ¦¬κ³ method μμμ μμ±λ enumμ heapμμμ μμ±λ κ°μ²΄λ€μ΄ ν λΉλλ€.
κ·Έλ κ²λλ€λ©΄, μ€μ λ‘ κ°μ²΄λ‘μ¨ μ¬μ©λλ λ³μλ stackμ λ€μ΄κ°κ² λλλ° stackμμ methodμ μλ κ°μ²΄μ μ£Όμκ°μ κ°μ§κ³ μ€κΈ° λλ¬Έμ κ·Έλ¬λ©΄ methodμ heap λλ€ λͺ¨λ κ°μ heapμμμ μ£Όμκ°μ κ°μ§κ³ μκ² λλ€!
Enumμ μ μνλ λ°©λ²
μ£Όμ : enum μ΄κ±°νμΌλ‘ μ§μ λ μμλ λλ¬Έμλ₯Ό μ¬μ©νλ©°, λ§μ§λ§μ ; μ λΆνμ§ μλλ€!
νλμ μλ° νμΌλ‘ λ§λ€μ΄μ μ μΈ

νμΌ μμ±ν λ enumνμΌ μ ννκ²λλ©΄ μλμ class μ리μ enumμ΄ λ€μ΄κ°
μ¬μ©ν λλ

EnumμΌλ‘ μ μν λ μ¬μ©ν μ΄λ¦(subject) μ Stringμ΄λ intμ κ°μ νμ μΌλ‘ λκ³ μ¬μ©
ν΄λμ€ μμμ μ μΈνκΈ°

νμν λ enum ν€μλλ₯Ό μ¬μ©ν΄μ μνλ μμλ€μ μ§μ΄λ£μ΄μ£Όκ³ μ¬μ©
ν΄λμ€ λ°μμ μ μΈνκΈ°

μ μΈμ νκ³ λμ μ¬μ©μ μ΄λ κ² νλ€


λ°μ΄ν° νμ μ²λΌ μ μΈνκ³ , enumμ΄λ¦.enumμμ λ°©μμΌλ‘ λ£μ΄μ μ¬μ©ν μ μλ€
enumμ΄ μ 곡νλ λ©μλ
values() : λͺ¨λ enumμ μμλ€μ λ°°μ΄μΌλ‘ μμ±
valuesν¨μλ₯Ό μ΄μ©ν΄μ enumμ μμλ€μ λͺ¨λ μΆλ ₯νλ μμ


valueOf() : λ¬Έμμ΄λ‘ enum μμμ μ΄λ¦μ μ°Ύμμ μμμ μ΄λ¦μ 리ν΄


name() : νΈμΆλ κ°μ μ΄λ¦μ StringμΌλ‘ 리ν΄
ordinal() : ν΄λΉ κ°μ΄ enumμ΄ μ μλ μμλ₯Ό μ μκ°μΌλ‘ 리ν΄
μ΄κ²μ μΈμ λ€λ₯Έ μ¬λλ€μ΄ μ¬μ©ν μλ μκΈ° λλ¬Έμ μ¬μ©μ λ νλ€
(μ¬μ§μ΄ μ°Ύμ보λκΉ Most programmerλ€μ μ¬μ©νμ§ μλλ€κ³ μ£ΌμμΌλ‘λ μ νμμλ€!)
compareTo(E o ) : enumκ³Ό μ§μ λ κ°μ²΄μ μμλ₯Ό λΉκ΅, μ§μ λ κ°μ²΄λ³΄λ€ μμ κ²½μ°, μμ μ μ, λμΌνλ©΄ 0, ν¬λ©΄ μμ μ μ 리ν΄
equals(Object other) : μ§μ λ κ°μ²΄κ° enum μ μμ κ°μκ²½μ°, trueλ₯Ό 리ν΄
java.lang.Enum
Enum ν΄λμ€λ λͺ¨λ μλ° μ΄κ±°μ²΄μ 곡ν΅λ μ‘°μ ν΄λμ€
Enum ν΄λμ€μλ μ΄κ±°μ²΄λ₯Ό μ‘°μνκΈ° μν λ€μν λ©μλκ° μμ

μ μΌν μμ±μ
protected Enum(String name, int ordinal) : μ μΌν μμ±μλ‘ νλ‘κ·Έλλ¨Έλ μ΄ μμ±μλ₯Ό νΈμΆν μ μμ
μ΄κ±°ν μ μΈμ λν μλ΅μΌλ‘ μ»΄νμΌλ¬μμ λ΄λ³΄λΈ μ½λλ₯Ό μ¬μ©
EnumSet
java.utilμ μ‘΄μ¬νλ©°, class EnumSet>μ΄λ κ² μ μΈνλ©΄μ μ¬μ©νλ€
EnumSetμ μ΄κ±°ν μ νκ³Ό ν¨κ² μ¬μ©νκΈ° μν setꡬν체μ΄λ€.
λ°λ³΅νλ λ©μλμ μν΄ λ¦¬ν΄λ λ°λ³΅κΈ°λ μ΄κ±° ν μμκ° μ μΈλ μμλ‘ μμλ₯Ό μννλ©°, 리ν΄λ λ°λ³΅κΈ°λ μ½νκ² μΌκ΄μ±μ΄ μμ
Null μμλ νμ©λμ§ μμΌλ©° λ§μ½ null μμλ₯Ό μ½μ νλ €κ³ νλ©΄ NullPointerExceptionμ΄ λ°μνλ€. κ·Έλ¬λ nullμμκ° μλμ§ ν μ€νΈνλ λ¨κ³λ μ κ±°νλ €λ μλλ κ°λ₯νλ€
EnumSetμ λκΈ°νλμ§ μλλ€. μ¬λ¬ μ€λ λκ° λμμ μ΄κ±°ν μ§ν©μ μ κ·Όνκ³ μ μ΄λ νλμ μ€λ λκ° μ§ν©μ μμ νλ κ²½μ°μ μΈλΆμμ λκΈ°νλμ΄μΌ νλ€.
λ©μλλ€
allOf : μ§μ λ μμ νμ μ λͺ¨λ μμλ₯Ό ν¬ν¨νλ enum setμ λ§λ¬
noneOf : μ§μ λ μμ νμ μ μ¬μ©νμ¬ λΉ enum setμ λ§λ¬
Type Safety
tip) κ°μ λ§€κΈ°κ³ μμλ₯Ό μ ν λλ 1,2,3... μ΄λ κ² κ°λκ²μλλΌ 10,20,30 μ΄λ κ² μμλ₯Ό λ§€κΈ°λ©΄ νΈνλ€! => μ¬μ΄μ κ°μ μΆκ°ν μΌμ΄ μκΈΈκ²μ΄κΈ° λλ¬Έμ!
μ°Έκ³
https://docs.oracle.com/javase/8/docs/api/java/util/EnumSet.html
https://www.opentutorials.org/module/1226/8025
Last updated
Was this helpful?