λλΆλΆμ μ΄κ±° νμ μμλ μμ°μ€λ½κ² νλμ μ μ«κ°μ λμλλ€. κ·Έλ¦¬κ³ λͺ¨λ μ΄κ±° νμ μ ν΄λΉ μμκ° κ·Έ μ΄κ±° νμ μμ λͺ λ²μ§Έ μμΉμΈμ§λ₯Ό λ°ννλ ordinalμ΄λΌλ λ©μλλ₯Ό μ 곡νλ€.
κ·Έλμ μ΄κ±° νμ μμμ μ°κ²°λ μ μ«κ°μ΄ νμνλ€λ©΄ ordinal λ©μλλ₯Ό μ¬μ©νλ©΄ λμ§ μμκΉλΌλ μκ°μ ν μ μλ€.
κ²°λ‘ λΆν° λ§νμλ©΄ κ·Έλ κ² μ¬μ©νλ©΄ μ λλ€.
'μ κ·Έλ κ² μ¬μ©νλ©΄ μ λλμ§'μ 'κ·Έλ¬λ©΄ μΈμ ordinalμ μ¬μ©ν΄μΌ νλμ§'μ λν΄μ μμ보μ.
π 1. μ΄κ±° νμ μμμ μ°κ²°λ μ μ«κ°μ μ»κΈ° μν΄ ordinal λ©μλλ₯Ό μ¬μ©νλ©΄ μ λλ μ΄μ
public enum Ensemble {
SOLO, DUET, TRIO, QUARTET, QUINTET,
SEXTET, SEPTET, OCTET, NONET, DECTET;
public int numberOfMusicians() {
return ordinal() + 1;
}
}
μμ μ½λλ ν©μ£Όλ¨μ μ’ λ₯λ₯Ό μ°μ£Όμκ° 1λͺ μΈ μλ‘(solo)λΆν° 10λͺ μΈ λν νΈ(dectet)κΉμ§ μ μν μ΄κ±° νμ μ΄λ€. λμμ νμ§λ§ μ μ§λ³΄μνκΈ°κ° λμ°ν μ½λμ΄λ€.
κ·Έ μ΄μ λ μλμ κ°λ€.
- μμ μ μΈ μμλ₯Ό λ°κΎΈλ μκ° numberOfMusiciansκ° μ€λμνλ€.
- μ΄λ―Έ μ¬μ© μ€μΈ μ μμ κ°μ΄ κ°μ μμλ μΆκ°ν λ°©λ²μ΄ μλ€.
8μ€μ£Ό(octet) μμκ° μ΄λ―Έ μμΌλ λκ°μ΄ 8λͺ μ΄ μ°μ£Όνλ 볡4μ€μ£Ό(double quartet)λ μΆκ°ν μ μλ€. - κ°μ μ€κ°μ λΉμλ μ μλ€.
12λͺ μ΄ μ°μ£Όνλ 3μ€ 4μ€μ£Ό(triple quartet)λ₯Ό μΆκ°νλ €λ©΄ 11λͺ μΌλ‘ ꡬμ±λ ν©μ£Όλ¨μ μΆκ°ν΄μΌ νλ€. (κ·Έλ°λ° 11λͺ μΌλ‘ ꡬμ±λ ν©μ£Όλ¨μ΄ μκΈ° λλ¬Έμ λλ―Έ(dummy) μμλ₯Ό μΆκ°ν΄μΌ νλ€...)
κ·Έλμ μ΄κ±° νμ μμμ μ°κ²°λ κ°μ ordinal λ©μλλ‘ μ»μ§ λ§κ³ , μΈμ€ν΄μ€ νλμ μ μ₯νλλ‘ νμ. π’
public enum Ensemble {
SOLO(1), DUET(2), TRIO(3), QUARTET(4), QUINTET(5),
SEXTET(6), SEPTET(7), OCTET(8), DOUBLE_QUARTET(8),
NONET(9), DECTET(10), TRIPLE_QUARTET(12);
private final int numberOfMusicians;
Ensemble(int numberOfMusicians) {
this.numberOfMusicians = numberOfMusicians;
}
public int numberOfMusicians() {
return numberOfMusicians;
}
}
π 2. κ·Έλ¬λ©΄ μΈμ ordinal λ©μλλ₯Ό μ¬μ©ν΄μΌ νλ κ±ΈκΉ?
κ·Έλ¬λ©΄ μΈμ ordinalμ μ¬μ©ν΄μΌ νλ κ²μΌκΉ? Enumμ API λ¬Έμλ₯Ό 보면 ordinalμ λν΄ μλμ κ°μ΄ μμ±λμ΄ μλ€.
λλΆλΆ νλ‘κ·Έλλ¨Έλ μ΄ λ©μλλ₯Ό μΈ μΌμ΄ μλ€.
μ΄ λ©μλλ EnumSetκ³Ό EnumMap κ°μ΄ μ΄κ±° νμ κΈ°λ°μ λ²μ© μλ£κ΅¬μ‘°μ μΈ λͺ©μ μΌλ‘ μ€κ³λμλ€.
λ°λΌμ, μ΄λ° μ©λκ° μλλΌλ©΄ ordinal λ©μλλ μ λ μ¬μ©νμ§ λ§μ. π’
ν΄λΉ κΈμ Joshua Bloch λμ 'Effective Java 3/E'λ₯Ό μ°Έκ³ νμμ΅λλ€.